- 作者:xiaoxiao
- 发表时间:2020-12-23 11:02
- 来源:未知
变量引用: ${abc}变量输出: export myvar=abc变量清除: unset myvar
获取文件名: basename /home/dir/abc.c 得到abc.c获取路径名: dirname /home/dir/abc.c 得到/home/dir
命令替换: `ls` 备用命令替换 : $(ls)
字符串:截断: #在$左边,%在$右边 ${myvar#abc} 从myvar左找到第一个abc,保留abc后面的 ${myvar##abc} 从myvar左找到最后一个abc,保留abc后面的 ${myvar%abc} 从myvar右找第一个abc,保留abc前面的 ${myvar%%abc} 从myvar右找到最后一个abc,保留abc前面的 ${myvar:开始位置:长度}
条件语句if [ -f "$file" ] then echo $file is Fileelif [ -d "$file" ]then echo $file is directoryfi
for file in /etc/a*do if [ -f $file ] then echo $file is file elif [ -d $file] then echo $file is directory fidone
while [ condition ]do statementsdone
myvar=0until [ $myvar -eq 10 ]do echo $myvar myvar=$(( $myvar + 1 ))done
case "${x##*.}" in gz) gzunpack ${SROOT}/${x} ;; bz2) bz2unpack ${SROOT}/${x} ;; *) echo "Archive format not recognized." exit ;;esac
算术:$(( 222 * 223 ))
命令行变量:$0命令本身$1, $2, ...各个变量$# 变量个数$@ 用空格隔开的各个变量
运算符: 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ] -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ] -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ] filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ] filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) -z string 如果 string 长度为零,则为真 [ -z "$myvar" ] -n string 如果 string 长度非零,则为真 [ -n "$myvar" ] string1 = string2 如果 string1 与 string2 相同,则为真 [ "$myvar" = "one two three" ] string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ]