shell 无法将读取输入传递到目录路径[重复]

ddhy6vgd  于 2023-01-26  发布在  Shell
关注(0)|答案(2)|浏览(96)
    • 此问题在此处已有答案**:

Conditional in shell(2个答案)
Why should there be spaces around '[' and ']' in Bash?(5个答案)
六年前关闭了。
这里是bash的新手,我正在尝试为cat命令向文件路径传递一个读输入。

read -p "enter folder" folderid
read -p "enter port (optional)if not required press 0:" port
if [$folderid -ne 0 && $port -ne 0];then
  new_interface=$(cat /var/abc/def/xyz_$fileid/randomfile)
  echo "$new_interface"
fi

folderid的示例输入:134567
我收到一个错误,指出:

-bash: [134567: command not found

不确定我做错了什么,尝试了不同的东西似乎都不起作用。

sg24os4d

sg24os4d1#

shell的标记器是空格敏感的。单词在空格和特殊字符如;&&&等处被拆分。使用

if [ $folderid -ne 0 -a $port -ne 0 ]; then
lnxxn5zx

lnxxn5zx2#

[后添加一个空格,完整的无错误脚本应为

read -p "enter folder" folderid
read -p "enter port (optional)if not required press 0:" port

if [ "$folderid" -ne 0 ] && [ "$port" -ne 0 ]; then
    new_interface="$(</var/abc/def/xyz_$fileid/randomfile)"
    echo "$new_interface"
fi

如果folderid应为字符串,请使用

if [ ! -z "$folderid" ] && [ "$port" -ne "0" ];then

此外,删除无用使用的猫

new_interface=$(cat /var/abc/def/xyz_$fileid/randomfile)

只是

new_interface="$(</var/abc/def/xyz_$fileid/randomfile)"

相关问题