提问人:Yama 提问时间:7/11/2023 最后编辑:Yama 更新时间:7/11/2023 访问量:69
'[[ 1' -gt 0 ']]' 命令未找到,set -x 未显示特殊字符
'[[ 1' -gt 0 ']]' command not found, no special character shown by set -x
问:
在编写带有命令行参数的 bash 脚本时,我使用以下结构:
#!/bin/bash
set -e
extension=".fna.gz"
declare -A genomes_completeness
declare -a genomes
declare -a completeness
Help() {
echo "help message"
}
#set default values of variables and declare types
foo=bar
if [ $# -eq 0 ]
then
Help
exit
fi
while [[ $# -gt 0 ]]
do
case $1 in
-f | --foo) foo="$2"
shift 2;;
-b | --bar) bar="$2"
shift 2;;
-h | --help) Help; exit;;
-* | --*) unknown="$1"; echo -e "Unknown option: ${unknown}"; Help; exit 1;;
*) shift;;
esac
done
它运行良好,我正在编写另一个,但在执行没有参数或标志的脚本时检查帮助消息是否正确显示时偶然发现了此错误:help
bash /path/script.sh --help
+ extension=.fna.gz
+ declare -A genomes_completeness
+ declare -a genomes
+ declare -a completeness
+ '[' 1 -eq 0 ']'
+ '[[ 1' -gt 0 ']]'
/path/script.sh: line 28: [[ 1: command not found
在寻找错误一段时间后(呵呵),我只是复制粘贴了另一个脚本的(仅那一行),然后它起作用了。while ...
我完全是在带有 nano 的 linux 上手动编写的脚本,所以我不知道我是否插入了一个特殊字符(以及如何插入)。如果有一个特殊字符,它会显示吗?该错误的其他可能来源是什么?set -x
我希望这个问题被正确提出。
答:
0赞
jhnc
7/11/2023
#1
键入可以插入不间断空格字符。通常,密钥被映射为“Compose”。ComposeSpaceSpaceAltGr
某些系统还会在键入时插入不间断空格Shift + Space
在 linux 上,可能会显示配置并包含有关配置不间断空格输入的信息。setxkbmap -print
man 7 xkeyboard-config
评论
0赞
Yama
7/12/2023
我想它一定是 +,因为我确实需要得到空格之后的那个。标记为答案,因为它最有可能发生。shift
space
shift
#$
评论
extension
genomes_completeness
'[[ 1'
在调试输出中,指示将 AND 视为单个令牌。这不应该发生在标准环境中。这真的是你运行的整个脚本吗?[[
$#
LC_ALL=C
bash: $'[[\302\240hello': command not found
bash: [[ hello: command not found