for files in $(find . -maxdepth 1 -type f); do
echo $(basename $files)
done
当它的副本/插入控制台时工作,但当作为shell脚本运行时,它返回
'/TEST.sh: line 1: syntax error near unexpected token `do
'/TEST.sh: line 1: `for files in $(find . -maxdepth 1 -type f); do
编辑:
尝试使用#!/ bin / sh添加到第一行现在结果
-bash: /oper/text2pdf_TEST.sh: /bin/sh^M: bad interpreter: No such file or directory
然而/ bin / sh确实存在
尝试将#!/ bin / bash添加到第一行,现在结果为
-bash: /oper/text2pdf_TEST.sh: /bin/bash^M: bad interpreter: No such file or directory
然而/ bin / bash确实存在
答案 0 :(得分:5)
你的错误是一个很大的暗示:注意它想说
...near unexpected token `do'
但结束时刻度位于该行的开头。那是因为它打印的令牌是do^M
(do
后跟回车符。)
您可能在DOS / Windows样式编辑器中编辑了该文件。它需要有UNIX样式行结尾。
答案 1 :(得分:2)
嗯,错误信息表明错误:
/bin/sh^M: bad interpreter: No such file or directory
你的编辑在/bin/sh
之后添加了一个额外的字符^ M(代码13)。配置您的编辑器,使其以正确的方式结束行。
也可以在操作系统上编辑文件,该操作系统以CR + LF结束行,然后将其复制到仅使用LF的操作系统。有关此换行符混淆的某些背景,请参阅this wikipedia article。
答案 2 :(得分:1)
如果没有shebang,您的脚本将由/bin/sh
执行。根据系统的不同,sh
可能不支持$(...)
语法。
添加
#!/bin/bash
作为剧本的第一行。
答案 3 :(得分:0)
#!/bin/sh
for files in $(find . -maxdepth 1 -type f); do
echo $(basename $files)
done
这个对我来说很好。也许你忘记了Shebang(指定翻译的第一行)?