[英]shell script error in unix
在目录中使用1#做什么?
cpfile = $ {1#/ usr / newconfig} ls -l $ cpfile | 读var1 echo var1
我正在尝试理解脚本,但我找不到任何可以帮助我确定此命令含义的资源。
通常,可以使用#
修改变量,这会删除前导字符串。 如果a
是一个含有foobar
内容的变量,那么${a#foo}
删除foo
并计算为bar
。 在您的情况下,$ 1是位置参数, ${1#/usr/newconfig}
是从开头删除“/ usr / newconfig”的字符串的值。 如果它不匹配,则表达式求值为与$ 1相同的字符串。
但是,这个脚本有一个相当重要的问题,它在运行的ls
的环境中分配cpfile,但是ls
不接收它作为参数。 结果, ls
将在当前工作目录上运行,而不是在作为参数传递给脚本的目录上运行。 (除非先前在某个地方的脚本中分配了cpfile
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.