在目录中使用1#做什么?
cpfile = $ {1#/ usr / newconfig} ls -l $ cpfile |读var1 echo var1
我正在尝试理解脚本,但我找不到任何可以帮助我确定此命令含义的资源。
答案 0 :(得分:0)
通常,可以使用#
修改变量,这会删除前导字符串。如果a
是包含内容foobar
的变量,则${a#foo}
会删除foo
并评估为bar
。在您的情况下,$ 1是位置参数,${1#/usr/newconfig}
是从开头删除“/ usr / newconfig”的字符串的值。如果它不匹配,则表达式的计算结果与$ 1相同。
但是,此脚本存在一个相当重要的问题,即它在运行的ls
环境中分配cpfile,但ls
不会将其作为参数接收。因此,ls
将在当前工作目录上运行,而不是作为脚本参数传递的目录。 (除非先前在某个地方的脚本中分配了cpfile
。)