我有一个接收文件,这样参数bash脚本:在路径参数bash中保留斜线?
>myscript dir/smalldir/file1.txt file3.txt
现在我想保存ARGS:
>[email protected]
或
>args=$*
但是当我尝试使用它时,它会打印:
dirsmalldirfile1.txt file3.txt
无斜杠。我怎样才能解决这个问题?我是新手,有功课。
谢谢。
我有一个接收文件,这样参数bash脚本:在路径参数bash中保留斜线?
>myscript dir/smalldir/file1.txt file3.txt
现在我想保存ARGS:
>[email protected]
或
>args=$*
但是当我尝试使用它时,它会打印:
dirsmalldirfile1.txt file3.txt
无斜杠。我怎样才能解决这个问题?我是新手,有功课。
谢谢。
你可以亲近你看到的结果,如果你改变IFS的设置,场间分隔符:
$ set -- "/abc/def/ghi" "jkl" "mno pqr/stu vwx"
$ print "%s\n" "[email protected]"
abc/def/ghi
jkl
mno pqr/stu vwx
$ echo "[email protected]"
abc/def/ghi jkl mno pqr/stu vwx
$ IFS=/
$ echo [email protected]
abc def ghi jkl mno pqr stu vwx
$ IFS=$' \t\n'
$
这不运行的词放在一起,但它失去了斜线。为了更好地诊断问题,您需要在脚本中提供更多代码。
独立地消失斜杠的问题,如果你需要保存的参数,你应该使用:
args=("[email protected]")
这节省了文件名到一个数组,保持名及正确处理空格。然后,您可以使用从0开始的索引访问单独的文件名:
echo "${args[1]}"
echo "${args[@]}"
for file in "${args[@]}"; do ...; done
在提问中使用的符号是:
args=$*
[email protected]
这些都保存的文件名到一个字符串用空格分隔原来的名字。如果原始文件名中有空格,则不能可靠地将其分割为原始文件名。大多数时候,这不是你想要的。
是的,但这并不能解释消失的'/'字符(我们需要更多来自OP的信息)。 –
一致同意,但在我们获得有关IFS是否是一个因素的信息之前,它对一般脚本提供了一些有用的指导(比方便地将其更多地纳入评论)。 –
ty 我想使用这样的参数 grep -h“something”$ args 我该怎么办? – Emad
斜杠(/)或反斜杠(\\)? – coelhudo
我的意思是斜杠“/” – Emad
你打算如何使用它? –