我有:This is my zip file.zip
在路上$dec
如果我手动将此代码复制到终端窗口,则会得到正确的输出。
但是,如果我使用相同的确切代码并将其放入.sh文件并使用执行set -x
,我将得到:
++ ls ''
ls: cannot access : No such file or directory
这是我正在使用的代码...
#!/bin/bash
set -x
for k in $(ls "$dec"); do
echo $k
if [[ "$k" == "" ]];
then
echo -e "Nothing Here\n"
elif [[ "$k" =~ \.(doc|txt)$ ]];
then
echo "Document"
elif [[ "$k" =~ ".zip" ]];
then
echo -e "ZIP"
fi
done
有人看到为什么在手动复制时为什么会运行,但在执行时却看不到吗?
$dec
已经定义。我只是将其排除在部分脚本之外。
~/Scripts/mypath$ echo $dec
/home/adam/Scripts/mypath/archived
如果$dec
没有价值,那么您正在做ls ""
。尝试一下,您将看到相同的错误消息。注意ls ""
与ls
(不带参数)不同。检查您的脚本以查看$dec
未定义原因。
如您所说,如果$dec
在运行脚本之前已定义,则可能需要导出它,以便运行的脚本知道该脚本。
export dec
./script.sh
请阅读以下内容以获取更多信息export
:https : //stackoverflow.com/questions/7411455/what-does-export-do-in-shell-programming
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句