我是bash脚本并且熟悉基本编程的新手。我想将命令分散到几行以便于阅读,但我的脚本不能在我的Raspberry Pi上运行。但是,如果我复制到我的Putty会话,它工作正常。这是脚本:
#!/bin/bash
sudo rrdtool create test.rrd --step 5 \
DS:speed:GAUGE:60:-10:50 \
RRA:AVERAGE:0.5:1:12
这是错误:
pi@raspberrypi ~/test $ sudo bash ./makedb.sh
'RROR: can't parse argument '
./makedb.sh: line 3: DS:speed:GAUGE:60:-10:50: command not found
./makedb.sh: line 4: RRA:AVERAGE:0.5:1:12: command not found
这是文件的样子,Notepad ++显示所有字符:https://i.imgur.com/kX7F7fK
我认为应该没问题,因为\和换行符之间没有字符,如下所述:How can I split a command over multiple lines when using an IF statement
我做错了什么?
答案 0 :(得分:2)
DS:speed:GAUGE:60:-10:50: command not found
这意味着你没有逃避终点。
使用cat -A
查看不可打印的字符:
示例:
head -3 /etc/passwd | cat -A
root:x:0:0:root:/root:/bin/bash$
daemon:x:1:1:daemon:/usr/sbin:/bin/sh$
bin:x:2:2:bin:/bin:/bin/sh$
请参阅第$
行
当您使用cat -A makedb.sh
时,您应该看到:
sudo rrdtool create test.rrd --step 5 \$
DS:speed:GAUGE:60:-10:50 \$
RRA:AVERAGE:0.5:1:12
如果\
和$
之间有任何内容,则无效