ShellScriptの「()」のエスケープについて質問です。
Q&A
Closed
解決したいこと
ShellScriptにおいて、subshell以外の用途で()を使用するときにエスケープが必要なのだという認識でおりましたが、自分の認識の何かが間違えていると思い、ご指摘頂きたいです。
現在ShellScriptの勉強のために
https://linuxconfig.org/bash-scripting-tutorial-for-beginners
にて勉強をしています。
let a=2+2
の実行後
let b=4*($a-1) を実行したところ
-bash: syntax error near unexpected token '('
と表示されたので () のような特殊な用途のある文字に関しては
エスケープが必要なのだと思い、
let b=4*\($a-1\)
としたところ、期待通りの計算結果となりました。
ですがその後エスケープをせずに
let c=($b**3)/2
を実行した場合はエラーが出ませんでした。
以上のことから、
・()がある場合にエスケープが必要
・ syntax error near unexpected token '(' の解決策としてエスケープをする
どちらかが間違えているのだと思っております。
自分の認識で間違えている部分をご指摘頂きたいです。
発生している問題・エラー
linuxconfig.org:~$ let a=2+2
linuxconfig.org:~$ echo $a
4
linuxconfig.org:~$ let b=4*($a-1)
linuxconfig.org:~$ echo $b
12
linuxconfig.org:~$ let c=($b**3)/2
linuxconfig.org:~$ echo $c
864
を順に実行したときに、let b=4*($a-1) のみ
-bash: syntax error near unexpected token '('が表示される