红联Linux门户
Linux帮助

${ }的用法

发布时间:2006-03-29 11:25:15来源:红联作者:CMK
这是对变量子串替换的经典实例:
引用:
引用:
...
假?我?定?了一??量?:
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.file.txt} :假如 $file ?空值,?使用 my.file.txt 作默?值。(保留??定及非空值)
${file:-my.file.txt} :假如 $file ?有?定或?空值,?使用 my.file.txt 作默?值。 (保留非空值)
${file+my.file.txt} :不管 $file ?何值,均使用 my.file.txt 作默?值。 (不保留任何值)
${file:+my.file.txt} :除非 $file ?空值,否?使用 my.file.txt 作默?值。 (保留空值)
${file=my.file.txt} :若 $file ??定,?使用 my.file.txt 作默?值,同?? $file 定??非空值。 (保留空值及非空值)
${file:=my.file.txt} :若 $file ??定或?空值,?使用 my.file.txt 作默?值,同?? $file 定??非空值。 (保留非空值)
${file?my.file.txt} :若 $file ??定,?? my.file.txt ?出至 STDERR。 (保留空值及非空值))
${file:?my.file.txt} :若 $file ??定或?空值,?? my.file.txt ?出至 STDERR。 (保留非空值)

?有哦,${#var} 可?算出?量值的?度:
${#file} 可得到 27 ,因? /dir1/dir2/dir3/my.file.txt ?好是 27 ?字?...

接下?恚?榇蠹医樯砸幌 bash 的??(array)?理方法。
一般而言,A="a b c def" ??的?量只是? $A 替??一??一的字串,
但是改? A=(a b c def) ,?是? $A 定????...
bash 的??替?方法可?考如下方法:
${A[@]} 或 ${A[*]} 可得到 a b c def (全部??)
${A[0]} 可得到 a (第一???),${A[1]} ??第二???...
${#A[@]} 或 ${#A[*]} 可得到 4 (全部???量)
${#A[0]} 可得到 1 (即第一???(a)的?度),${A[3]} 可得到 3 (第一???(def)的?度)
A[3]=xyz ?是?第 4 ???重新定?? xyz ...

?如此?的....
文章评论

共有 0 条评论