有没有人能解释,为什么
#!/bin/csh
tar --file=test.a --append --transform 's,^,data/,' data/jobid.dat
按照预期工作,创建包含data/data/jobid.dat的test.a,但是
#!/bin/csh
set opt="--transform 's,^,data/,'"
echo "$opt"
tar --file=test.a --append "$opt" data/jobid.dat
失败,错误为
--transform 's,^,data/,'
tar: unrecognized option '--transform 's,^,data/,''
谢谢和干杯,马蒂亚斯
发布于 2020-11-30 21:30:52
工作用例将's,^,data/
视为tar程序的单个参数,与--transform
参数分开。
set opt="--transform 's,^,data/,'"
将opt的值设置为相同的字符串。
当您执行tar … "$opt"
时,opt的值将被替换为单个命令参数,从而导致tar
无法识别的参数。该命令随后不会再次拆分成单词--单词拆分发生在参数替换之前,并且不会对引号中出现的替换重新执行。
我相信(但没有证实)如果你写的$foo
没有引号,你会得到你想要的效果。
https://stackoverflow.com/questions/65081365
复制相似问题