【发布时间】:2013-12-07 17:36:53
【问题描述】:
以下 bash 脚本从给定的目录路径中找到一个 .txt 文件,然后从 .txt 文件中更改一个单词(将山变为海)
#!/bin/bash
FILE=`find /home/abc/Documents/2011.11.* -type f -name "abc.txt"`
sed -e 's/mountain/sea/g' $FILE
在这种情况下,我得到的输出是可以的。 我的问题是,如果我想将目录路径作为命令行参数,那么它就不起作用。假设,我将我的 bash 脚本修改为:
#!/bin/bash
FILE=`find $1 -type f -name "abc.txt"`
sed -e 's/mountain/sea/g' $FILE
然后像这样调用它:
./test.sh /home/abc/Documents/2011.11.*
错误是:
./test.sh: line 2: /home/abc/Documents/2011.11.10/abc.txt: Permission denied
谁能建议如何将目录路径作为命令行参数访问?
【问题讨论】:
-
./test.sh *.txt将使 shell 在 test.sh 被调用之前扩展该通配符,因此它在功能上与./test.sh file1.txt file2.txt file3.txt etc...
标签: linux bash directory command-line-arguments