date的话你用$()引起来,或者键盘左上角那个符号引起来才能执行
echo "time is $(date +%T)!"像这样
echo ./run_nets.sh $(pwd)/$onchip_temp >> nansong_run_nets.sh
B.shell if语句:
菜鸟我最近在学习shell脚本,自己写了个很简短的脚本测试下,一直报错“syntax error near unexpected token `then' ”。上网google了一圈也没发现原因。原来我在写if条件判断的时候,if后面缺少一个空格
。
[plain]
view plain
在写if条件判断的时候,要注意不但if后面需要空格,而且“ [ ” 后面 和“ ] ”前面都需要有空格。有没有感觉很无语。还有一点需要谨记,在shell脚本中当使用“ = ”给变量赋值的时候,在 “ = ”两边
一定不能加空格
,否者会把变量名当作一个命令来执行而报出“ command not found ”的错误,但是在if条件判断的时候,
if [ "判断条件" ] 判断条件中需要用到比较的时候则“ = ” 或者 " != "的两边都需要用空格隔开
。另外在写if判断的时候,不要忘记then,否者也会有问题。当然elif(相当于else if)是可选的。
下面再总结一下shell脚本中,if判断中的测试选项。
1,关于文件的判断
返回 true 如果...
-e 文件存在
-f file 是一个 regular 文件(不是目录或者设备文件)
-s 文件长度不为 0
-d 文件是个目录
-b 文件是个块设备(软盘,cdrom 等等)
-c 文件是个字符设备(键盘,modem,声卡等等)
-p 文件是个管道
-h 文件是个符号链接
-L 文件是个符号链接
-S 文件是个 socket
-t 关联到一个终端设备的文件描述符
这个选项一般都用来检测是否在一个给定脚本中的 stdin[-t0]或[-t1]是一个终端
-r 文件具有读权限(对于用户运行这个 test)
-w 文件具有写权限(对于用户运行这个 test)
-x 文件具有执行权限(对于用户运行这个 test)
-g set-group-id(sgid)标志到文件或目录上,如果一个目录具有 sgid 标志,那么一个被创建在这个目录里的文件,这个目录属于创建这个目录的用户组,并不一定与创建这个文件的用户的组相同.对于 workgroup 的目录共享来说,这非常有用.见<<UNIX 环境高级编程中文版>>第 58 页.
-u set-user-id(suid)标志到文件上如果运行一个具有 root 权限的文件,那么运行进程将取得 root 权限,即使你是一个普通用户.[1]这对于需要存取系统硬件的执行操作(比如 pppd 和 cdrecord)非常有用.如果没有 suid 标志的话,那么普通用户(没有 root 权限)将无法运行这种程序.见<<UNIX 环境高级编程中文版>>第 58 页.
-rwsr-xr-t
1 root
178236 Oct 2 2000 /usr/sbin/pppd
对于设置了 suid 的文件,在它的权限标志中有"s".
-k 设置粘贴位,见<<UNIX 环境高级编程中文版>>第 65 页.对于"sticky bit",save-text-mode 标志是一个文件权限的特殊类型.如果设置了这个标志,那么这个文件将被保存在交换区,为了达到快速存取的目的.如果设置在目录
中,它将限制写权限.对于设置了 sticky bit 位的文件或目录,权限标志中有"t".
drwxrwxrwt
7 root
1024 May 19 21:26 tmp/
如果一个用户并不时具有 stick bit 位的目录的拥有者,但是具有写权限,那么用户只能在这个目录下删除自己所拥有的文件.这将防止用户在一个公开的目录中不慎覆盖或者删除别人的文件,比如/tmp(当然 root 或者是目录的所有者可以随便删除或重命名其中的文件).
-O 你是文件的所有者.
-G 文件的 group-id 和你的相同.
-N 从文件最后被阅读到现在,是否被修改.
f1 -nt f2 文件 f1 比 f2 新
f1 -ot f2 f1 比 f2 老
f1 -ef f2 f1 和 f2 都硬连接到同一个文件.
! 非--反转上边测试的结果(如果条件缺席,将返回 true)
2,关于字符串的判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
3,数字的判断
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
A.打印时间戳:date的话你用$()引起来,或者键盘左上角那个符号引起来才能执行echo "time is $(date +%T)!"像这样echo ./run_nets.sh $(pwd)/$onchip_temp &gt;&gt; nansong_run_nets.shB.shell if语句: 菜鸟我最近在学习shell脚本,自己写了个很简短的脚本测试下,一直报错“syntax error...
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d DIR ] 如果 FILE 存在且是一个目录则为真。
1. if-then
语句
最基本的结构化命令就是 if-then
语句
。 if-then
语句
有如下格式。ba
sh
shell
的 if
语句
会运行 if 后面的那个命令。如果该命令的退出状态码是 0即该命令运行成功,位于 then 部分的命令就会被执行。如果该命令的退出状态码是其他值, then部分的命令就不会被执行。fi
语句
用来表示 if-then
语句
到此结束。
if command
commands
语句
形式还可以写成这样
if command; then
什么是
Shell
?
shell
是用户和Linux(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由
shell
先解释然后传给Linux内核。
shell
是一个命令语言解释器(command-language interpreter)...
Shell
是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是
Shell
的本质
用户通过
Shell
来使用 Linux,不启动
Shell
的话,用户就没办法使用 Linux;
Shell
就是一个“中间商”,它在用户和内核之间“倒卖”数据
进入
Shell
的方法是让 Linux 系统退出图形界面模式,进入
控制
台模式,这种模式称为 Linux
控制
台
Ba
sh
的功能和特性
历史命令:保存执行过的命令,可以快速重.
菜鸟我最近在学习
shell
脚本,自己写了个很简短的脚本测试下,一直报错“syntax error near unexpected token `then' ”。上网google了一圈也没发现原因。原来我在写if条件判断的时候,if后面缺少一个空格。
if [ 判断条件 ] 在写if条件判断的时候,要注意不但if后面需要空格,而且“ [ ” 后面 和“ ] ”前面都需要有空格。有没
shell
脚本的测试大家经常使用的方法就是使用
echo
出数据来看是否符合程序运算的值。
如果脚本过大的,这使用定义的常量开关开
控制
echo
的输出。
这里给大家介绍一个方法,在脚本里面#!/usr/bin/
sh
后设置一行set -xv就可以直接进入调试模式了。
而且一目了然。
请看如下列子:
[www.linuxidc.com @linuxsource]$ls
ada gcc-4.4.
文章目录1、if 的基本语法:2、字符串的判断3、数值的判断4、文件和目录的判断5、复杂逻辑判断示例1:`与` 的使用示例2:`或` 的使用5、举例6、条件变量替换:
1、if 的基本语法:
if [ command ];then
符合该条件执行的
语句
elif [ command ];then
符合该条件执行的
语句
符合该条件执行的
语句
2、字符串的判断
字符串批较时,变量一定要用 双引号。
[ -z "str" ] 如果str的长度为零,则为真 ,即判断是否为空,空即
命令
控制
的方法流程示例:
⛅应用程序-->系统命令/
shell
命令--->
Shell
解释器--->系统接口--->内核--->硬件
⛅系统命令/
Shell
命令--->
Shell
解释器--->系统接口--->内核--->硬件
⛅应用程序--->系统命令/
Shell
命令--->系统接口--->内核--->硬件
2.为何要用系统命令
为了使用计算机
一.Ba
sh