私はいくつかの ksh コードを調べていて、動作しないと思われる行に出くわしました。コードをテストするとうまくいきましたが、その理由はわかりません。
問題があれば、これは AIX 5.3 システムで実行されています。
コードの行は次のとおりです。
scriptname=$(\basename $0)
basename
コマンドの前にバックスラッシュがあるため、うまくいくとは思いませんでしたが、scriptname
変数をテストしたところ、正しい値がありました。
コマンドラインでさらにテストを行いました。
$ echo $(\echo test)
test
$ echo $(\echo \test)
test
$ echo $(\e\c\h\o \test)
test
$ echo `\e\c\h\o \test`
test
$ echo $(\echo "\test")
est
コマンド置換の外で試してみましたが、思ったようには機能しませんでした。
$ \echo \testi\ng
testing
$ \echo "\testi\ng"
esti
g
最後のものは、私にとって意味のある唯一のものです。
Kornshell はバックスラッシュを無視するだけですか、それともバックスラッシュの前の文字に変換するだけですか? コマンドラインのどこかに a を置くと\n
改行になると思いましたが、どうやらそれが引用符で囲まれている場合、または\\n
.
コマンドラインでバックスラッシュを使用してkshが行うことを誰か説明できますか?
いずれにせよ、最初に質問したコマンドを記述するより良い方法は次のようになると思います。
scriptname=$(basename $0)
それ以外の:
scriptname=$(\basename $0)
それは問題ですか?
前もって感謝します!