unix中的shell脚本错误

时间:2015-02-11 12:02:01

标签: shell unix

在目录中使用1#做什么?

  

cpfile = $ {1#/ usr / newconfig} ls -l $ cpfile |读var1 echo var1

我正在尝试理解脚本,但我找不到任何可以帮助我确定此命令含义的资源。

1 个答案:

答案 0 :(得分:0)

通常,可以使用#修改变量,这会删除前导字符串。如果a是包含内容foobar的变量,则${a#foo}会删除foo并评估为bar。在您的情况下,$ 1是位置参数,${1#/usr/newconfig}是从开头删除“/ usr / newconfig”的字符串的值。如果它不匹配,则表达式的计算结果与$ 1相同。

但是,此脚本存在一个相当重要的问题,即它在运行的ls环境中分配cpfile,但ls不会将其作为参数接收。因此,ls将在当前工作目录上运行,而不是作为脚本参数传递的目录。 (除非先前在某个地方的脚本中分配了cpfile。)