我有一个脚本,我试图运行,但我只是得到错误“:command not found”每当我试图运行它.这里是我试图做修复它:1.确保hashbang正确“#!/bin/bash”1.在文件上运行dos 2unix1.以scriptname.sh、./scriptname.sh和/bin/bash scriptname.sh的名称运行脚本
olmpazwi1#
这是由回车引起的。下面是bash tag wiki的摘录:
*检查您的脚本或数据是否有DOS风格的行尾字符
cat -v yourfile
echo "$yourvariable" | cat -v
DOS回车将在每行后显示为^M。如果找到它们,请使用dos2unix(也称为fromdos)或tr -d '\r'删除它们确保检查所有数据,而不仅仅是脚本本身。
^M
dos2unix
fromdos
tr -d '\r'
j7dteeu82#
您可以使用这些来删除不必要的字符:
tr -cd '[:alnum:][:blank:][:punct:]\n' < script.sh > new_script.sh
字符串或
tr -cd '[:graph:][:blank:]\n' < script.sh > new_script.sh
型然后尝试new_script.sh。
new_script.sh
xfyts7mz3#
确保你没有多余的空格。当我试图给一个变量赋值时就发生了这种情况:a = "test"而不是a="test"
a = "test"
a="test"
3条答案
按热度按时间olmpazwi1#
这是由回车引起的。下面是bash tag wiki的摘录:
*检查您的脚本或数据是否有DOS风格的行尾字符
cat -v yourfile
或echo "$yourvariable" | cat -v
。DOS回车将在每行后显示为
^M
。如果找到它们,请使用
dos2unix
(也称为fromdos
)或tr -d '\r'
删除它们确保检查所有数据,而不仅仅是脚本本身。
j7dteeu82#
您可以使用这些来删除不必要的字符:
字符串
或
型
然后尝试
new_script.sh
。xfyts7mz3#
确保你没有多余的空格。当我试图给一个变量赋值时就发生了这种情况:
a = "test"
而不是a="test"