【问题标题】:Error print the message错误打印消息
【发布时间】:2018-06-14 12:33:31
【问题描述】:

方法

我有一个 ang 脚本,它通过扩展名执行文件聚合,创建一个提交并通过推送上传。 这是:

function LsAddCm () {

echo -e 'Enter the extension'
read rExtension
# AEFO-Started : #Audio-WB Creación de 'AEFO_00SL_AudioWB/'
# CM1 => AEFO-Started : 
echo -e 'Enter the first part [ AEFO-Started : ]'
read CM1
# CM2 => #Audio-WB 
echo -e 'Enter the second part [ #Audio-WB ]'
read CM2
# CM3 => Creación de {...}
echo -e 'Enter the third part [ Creación de ]'
read CM3
#message="AEFO-Started : #Audio-WB Creación de "
echo "'${CM1}' '${CM2}' '${CM3}'"
time ls |  awk -F . '{print $1}' | xargs -n1 sh -c 'git add $1.'${rExtension}' && git commit -m "'${CM1}' '${CM2}' '${CM3}' $1.'${rExtension}'" && git push' sh

}
# Execute the program, in anothers words, runnning the function necesary

function run (){

    echo run ✅
    LsAddCm
}

run

问题

问题是当我想把一个变量作为消息并且在执行时引入了一个空格,输出是:

$ sh s1.sh
run ✅
Enter the extension
mp3
Enter the first part [ AEFO-Started : ]
A 1
Enter the second part [ #Audio-WB ]
A 2
Enter the third part [ Creación de ]
A 3
'A 1' 'A 2' 'A 3'
1 A: -c: line 0: unexpected EOF while looking for matching `"'
1 A: -c: line 1: syntax error: unexpected end of file
1 A: -c: line 0: unexpected EOF while looking for matching `"'
1 A: -c: line 1: syntax error: unexpected end of file
1 A: -c: line 0: unexpected EOF while looking for matching `"'
1 A: -c: line 1: syntax error: unexpected end of file

real    0m0,899s
user    0m0,061s
sys     0m0,447s

问题

我该如何解决?

【问题讨论】:

  • 引用你的变量! ${CM1}"${CM1}"shellcheck.net 是你的朋友。
  • 我在 ' 旁边尝试了 `and" 但没有...
  • 我不确定你在说什么,但我相当肯定引用变量会解决问题。
  • …我可以用foo='bar baz' ; sh -c 'echo "'${foo}'"' 产生类似的错误,然后用foo='bar baz' ; sh -c 'echo "'"${foo}"'"' 解决它。
  • @NicolásAlarcónR。我已经尝试过你的代码(逐字),我得到了同样的错误并引用了所有变量确实解决了错误time ls | awk -F . '{print $1}' | xargs -n1 sh -c 'git add $1.'"${rExtension}"' && git commit -m "'"${CM1}"' '"${CM2}"' '"${CM3}"' $1.'"${rExtension}"'" && git push' sh

标签: linux bash git github


【解决方案1】:

解决方案(修正)

引用所有变量确实可以解决错误,换句话说,要正确打印,您必须更正以下行:

time ls |  awk -F . '{print $1}' | xargs -n1 sh -c 'git add $1.'${rExtension}' && git commit -m "'${CM1}' '${CM2}' '${CM3}' $1.'${rExtension}'" && git push' sh

通过以下方式:

time ls | awk -F . '{print $1}' | xargs -n1 sh -c 'git add $1.'"${rExtension}"' && git commit -m "'"${CM1}"' '"${CM2}"' '"${CM3}"' $1.'"${rExtension}"'" && git push' sh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2013-11-25
    • 1970-01-01
    • 2011-05-05
    • 2013-07-21
    • 2016-05-11
    相关资源
    最近更新 更多