お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-12-07 11:25:59

xyz999
新しいメンバ
登録日: 2013-12-07

kshにおけるechoの仕様

OS:Ubuntu 12.04 LTS

Solaris上のksh93で書いたシェルスクリプトがあるので、ksh93をインストールして動かしたみました。echoコマンドの動作がSolaris上のksh93と異なるため動きません。uBuntu上のkshのechoコマンドは、

# apt-get install ksh
# ksh
$ echo "-n"
$

となります。Solaris上のksh93では

Solaris$ echo "-n"
Solaris$  -n

となります。これは仕様が異なるのでしょうか。また、

$ echo -n "-n"
$

となるので、文字列-nをechoで出力することができません。これも仕様ですか。

オフライン

 

#2 2013-12-08 11:38:46

katsu07
ゲスト

Re: kshにおけるechoの仕様

仕様までは解りませんが、ubuntuのbashでもechoでの"-n"は直接表示できません。
$ echo "-n"
$
(-nの前後に、何か1文字でもあれば表示できます。)

以下の様にすると表示できました。
$ echo -e "\x00-n"
-n
$
(null charactorを入れてしまう。)

異なるshやdistribution間で共通性を持たせるならprintfの方が良いかもしれません。
$ printf "%s\n" -n
-n
$

 

#3 2013-12-08 20:19:22

taka.zoo.n
メンバ
登録日: 2013-05-30

Re: kshにおけるechoの仕様

コード:

echo -e \\055n

ではいかがですか。

オフライン

 

#4 2013-12-09 02:05:21

xyz999
新しいメンバ
登録日: 2013-12-07

Re: kshにおけるechoの仕様

お返事、ありがとうございます。

echo -e "\x00-n"
or
echo -e \\055n

を使わせていただきます。Solaris上のシェルスクリプトをubuntu側に移植することを考えています。問題は、シェルスクリプトがかなり膨大で、しかも、頻繁にechoを使っていることです。他の解決策がないかも検討してみます。

オフライン

 

Board footer

Powered by FluxBB