文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>读shell十三问

读shell十三问

时间:2006-07-18  来源:CUDev

最近,为了给几个大二的同学回答一些shell问题。以前,总是以没有时间,推脱没有看shell十三问。
今天,找出来看了一下,发现里面的内容真是经典。

尤其是对于 ${ } 的一些特异功能:
为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:   file=/dir1/dir2/dir3/my.file.txt  #我们可以用 ${ } 分别替换获得不同的值:
${file#*/}  #拿掉第一条   / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/} #拿掉最后一条 / 及其左边的字符串:my.file.txt
${file#*.}  #拿掉第一个   . 及其左边的字符串:file.txt
${file##*.} #拿掉最后一个 . 及其左边的字符串:txt
${file%/*}  #拿掉最后条   / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*} #拿掉第一条   / 及其右边的字符串:(空值)
${file%.*}  #拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*} #拿掉第一个   . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:     # 是去掉左边(在键盘上 # 在 $ 之左边) , % 是去掉右边(在键盘上 % 在 $ 之右边)
     单一符号是最小匹配(第一个)﹔两个符号是最大匹配(最后一个)。    ${file:0:5}  #提取最左边的 5 个字节:/dir1
   ${file:5:5}  #提取第 5 个字节右边的连续 5 个字节:/dir2      #对变量值里的字符串作替换:
   ${file/dir/path}  #将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
   ${file//dir/path} #将全部 dir 提换为 path:/path1/path2/path3/my.file.txt      #利用 ${ } 还可针对不同的变量状态赋值(没设定、空值、非空值):
${file-my.txt}  #若 $file 没有设定,则使用 my.txt 作传回值。(空值及非空值时不处理) ${file:-my.txt} #若 $file 没有设定或为空值,则使用 my.txt 作传回值。 (非空值时不作处理)
${file+my.txt}  #若 $file 设为空值或非空值,均使用 my.txt 作传回值。(没设定时不作处理)
${file:+my.txt} #若 $file 为非空值,则使用 my.txt 作传回值。 (没设定及空值时不作处理)
${file=my.txt}  #若 $file 没设定,则使用 my.txt 作传回值,同时将 $file 赋值为 my.txt 。                  (空值及非空值时不作处理)
${file:=my.file.txt} #若 $file 没设定或为空值,则使用 my.txt 作传回值,                       同时将 $file 赋值为 my.txt 。 (非空值时不作处理)
${file?my.txt}  #若 $file 没设定,则将 my.txt 输出至 STDERR。 (空值及非空值时不作处理)
${file:?my.txt} #若 $file 没设定或为空值,则将 my.txt 输出至 STDERR。 (非空值时不作处理)   tips:
以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态.
一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响.
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载