Linuxshell变量替换
1。变量内容修改filedir1dir2dir3my。file。txt可以用{}分别替换获得不同的值:{file}:拿掉第一条及其左边的字符串:dir1dir2dir3my。file。txt{file}:拿掉最后一条及其左边的字符串:my。file。txt{file。}:拿掉第一个。及其左边的字符串:file。txt{file。}:拿掉最后一个。及其左边的字符串:txt{file}:拿掉最后条及其右边的字符串:dir1dir2dir3{file}:拿掉第一条及其右边的字符串:(空值){file。}:拿掉最后一个。及其右边的字符串:dir1dir2dir3my。file{file。}:拿掉第一个。及其右边的字符串:dir1dir2dir3my{file。txt。cpp}将。txt取代为。cpp:dir1dir2dir3my。file。cpp
2。有条件的变量替换{variable:value}如变量未定义则取value值变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。例:echoHelloUNAME结果显示:HelloechoHello{UNAME:there}结果显示:HellothereechoUNAME结果显示:(空)UNAMEJohnechoHello{UNAME:there}结果显示:HelloJohn{variable:value}不但使用默认值进行替换,而且将默认值赋给该变量。该形式在变量替换后同时把值value符给变量variable。例:echoHelloUNAME结果显示:HelloechoHello{UNAME:there}结果显示:HellothereechoUNAME结果显示:there{variable:value}如变量定义了则取value值只有当变量已赋值时才用指定值替换,变量variable已赋值时,其值才用value替换,否则不进行任何替换。例:ERROPTAecho{ERROPT:Errortrackingisacitive}结果显示:ErrortrackingisacitiveERROPTecho{ERROPT:Errortrackingisacitive}结果显示:(空){variable:?message}使用错误检查的条件进行变量替换,当变量variable已设置时,正常替换。例:UNAMEecho{UNAME:?UNAMEHASNOTBEENSET}结果显示:UNAMEHASNOTBEENSETUNAMEStephanieecho{UNAME:?UNAMEHASNOTBEENSET}结果显示:Stephanie
3。在操作中的使用集体增加后缀find。!typedxargsimv{}{}。c;find。!typedexecmvf{}{}。suf;把。txt变成。cpp方法一forfileinfind。name。txttypef;domvfile{file。}。cpp;done方法二rename。txt。cpp。txt