標準のターミナルコマンドラインとbashスクリプトの環境はどのように異なりますか?

Peter.O

ターミナルコマンドラインの環境とbashスクリプトの環境に何か違いがあることは知っていますが、その違いが何であるかはわかりません...

これが最終的に私がこの質問をするように導いた例です。それはいくつかの違いを洗い流すかもしれません。

このコマンドを使用して、数字から先行ゼロを削除しようとしています。

  • var="000123"; var="${var##+(0)}" ; echo $var

ターミナルのコマンドラインからこのコマンドを実行すると、次のようになります。 123

ただし、スクリプト内から実行すると、機能しません。私は得る:000123

私はUbuntu10.04を使用しており、samの結果で次のすべてを試しました。

  • GNOMEターミナル2.30.2
  • コンソール2.4.5
  • #!/ bin / bash
  • #!/ bin / sh

私のbashバージョン41 5 1リリースi486-pc-linux-gnu(ターミナルとスクリプト内)

CLIとスクリプトの「ショップ」の違い:

    CLI   Script  
    on     off    checkwinsize    
    on     off    expand_aliases  
    on     off    extglob         
    on     off    histappend      
    off    on     hostcomplete    

この違いの原因は何ですか?

いくつかのアップグレードが、それはスクリプトで動作するようになる場合であっても...
私が見つけることを試みている何をして、なぜ、そう将来的に、私は外を見るために何を知っていますよ。


先行ゼロを削除する3つのbashの方法を次に示します。(私が最初にこの質問をしたとき、私は1つしか知りませんでした)

var=0001230; var="$[10#$var]";           echo $var   # fastest= 1.00  integers only
var=0001230; var="${var##+(0)}";         echo $var   # slower x 1.25  works with strings, but requires shopt -s extglob
var=0001230; var="${var#${var%%[!0]*}}"; echo $var   # slower x 1.61  works with strings  
Loevborg

あなたの質問は一般的に答えることができません。しかし、いくつかのコメント。私のバージョンのbash(3.1.17(1)-release)では、コマンドラインから実行してもコマンドに目的の出力がありません。zshでも同じです。おそらく、あなたの命令について何かが怪しいです。「## +(0)」が何を達成するのかわかりませんが、「#0」は先行ゼロを1つ削除することに成功しました。これは、任意の数のゼロを削除する方法を示しています。

コマンドラインとスクリプトの動作に実際に違いがある場合は、スクリプトが異なるインタープリター(異なるbashバージョン、zshの代わりにbash)または異なるシェルオプション(実行してみてくださいshopt)を使用している可能性があります後者の違いは、あなたの対話型シェルの調達の結果であるかもしれない$HOME/.bashrc$HOME/.profileスクリプトは、一般的にないのに対し。エクスポートすると継承されるため、環境変数には影響しませんが、すべてのシェルで設定する必要があるシェルオプションには影響します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

標準のターミナルコマンドラインとbashスクリプトの環境はどのように異なりますか?

分類Dev

ターミナルとスクリプトのコマンドのアクションが異なります

分類Dev

「xclip」や「xsel」などのコマンドラインクリップボードツールは、クリップボードをどのように保持しますか?そうでないX Windows環境ではどうすればよいですか?

分類Dev

AWS ESテストドメインは本番環境とどのように異なりますか?

分類Dev

PerlスクリプトのエラーでUbuntuコマンドラインへのSSHターミナルウィンドウが閉じないようにすることはできますか?

分類Dev

Linuxのシェル( `sh`)とは、bashファイルの標準へのリダイレクトはどのように異なりますか?

分類Dev

このスクリプトファイルの関数を毎回ソースすることなくロードするにはどうすればよいですか?「コマンドが見つかりません」(Bash /スクリプトの基本)

分類Dev

Pythonファイルは、コマンドラインオプションとパイプ機能を備えたモジュールとスクリプトの両方になるようにどのように作成する必要がありますか?

分類Dev

ターミナルコマンド用のスクリプトファイルを作成するにはどうすればよいですか?

分類Dev

ターミナルコマンド用のスクリプトファイルを作成するにはどうすればよいですか?

分類Dev

CDKビルドスクリプトの環境として、awsECRリポジトリのカスタムウィンドウベースのビルドツールDockerイメージをどのように使用する必要がありますか

分類Dev

コマンドラインから標準のTCP / IPプリンタポートを追加するにはどうすればよいですか?

分類Dev

デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

分類Dev

Elixirには、PEP8やErlangプログラミングルールなどの言語開発者によって公開されたコーディング標準または信頼できるスタイルガイドがありますか?

分類Dev

コマンドのシェルスクリプトを実行すると、スーパーバイザーの標準出力ログが空になります

分類Dev

bashスクリプトは、パイプライン内から標準出力をどのように書き込むことができますか?

分類Dev

リンカは、ストリップされたダイナミックライブラリ内のコードをどのように見つけますか?

分類Dev

コマンドラインツールにはどのように独自のオートコンプリートリストがありますか?

分類Dev

Mac OSXのターミナルコマンドラインで「bash」と入力するとどうなりますか?

分類Dev

セミジョインは、ナチュラルジョイン+プロジェクションとどのように異なりますか?

分類Dev

ここにある10の記事のリンク、タイトル、著者、タイムスタンプを取得するにはどうすればよいですか?スープの出力はブラウザとは異なります

分類Dev

標準ライブラリ演算子と競合することなく、関連するクラスのグループの演算子をテンプレートオーバーロードするにはどうすればよいですか?

分類Dev

JavaScriptではコンストラクター関数とAPIインターフェースはどのように異なりますか?

分類Dev

「= default」は、デフォルトのコンストラクタおよびデストラクタの「{}」とどのように異なりますか?

分類Dev

クラスと関数コンストラクタはどのように異なりますか

分類Dev

C ++標準ライブラリの特定の関数のソースコードはどこにありますか?(Visual Studioのインストール)

分類Dev

デスクトップ環境でファイルを開くアプリケーションの選択に対応するコマンドラインを見つけるにはどうすればよいですか?

分類Dev

ターミナルまたはマルチプロセッシングライブラリなしでPythonスクリプトによって使用されるCPUの数を制限するにはどうすればよいですか?

分類Dev

bashスクリプトでコマンドラインツールの複数のインスタンスを実行するにはどうすればよいですか?+スクリプトのユーザー入力

Related 関連記事

  1. 1

    標準のターミナルコマンドラインとbashスクリプトの環境はどのように異なりますか?

  2. 2

    ターミナルとスクリプトのコマンドのアクションが異なります

  3. 3

    「xclip」や「xsel」などのコマンドラインクリップボードツールは、クリップボードをどのように保持しますか?そうでないX Windows環境ではどうすればよいですか?

  4. 4

    AWS ESテストドメインは本番環境とどのように異なりますか?

  5. 5

    PerlスクリプトのエラーでUbuntuコマンドラインへのSSHターミナルウィンドウが閉じないようにすることはできますか?

  6. 6

    Linuxのシェル( `sh`)とは、bashファイルの標準へのリダイレクトはどのように異なりますか?

  7. 7

    このスクリプトファイルの関数を毎回ソースすることなくロードするにはどうすればよいですか?「コマンドが見つかりません」(Bash /スクリプトの基本)

  8. 8

    Pythonファイルは、コマンドラインオプションとパイプ機能を備えたモジュールとスクリプトの両方になるようにどのように作成する必要がありますか?

  9. 9

    ターミナルコマンド用のスクリプトファイルを作成するにはどうすればよいですか?

  10. 10

    ターミナルコマンド用のスクリプトファイルを作成するにはどうすればよいですか?

  11. 11

    CDKビルドスクリプトの環境として、awsECRリポジトリのカスタムウィンドウベースのビルドツールDockerイメージをどのように使用する必要がありますか

  12. 12

    コマンドラインから標準のTCP / IPプリンタポートを追加するにはどうすればよいですか?

  13. 13

    デスクトップ環境のアプリケーションが他のDEのモジュール、ライブラリなどをロードしているかどうかをどのように知ることができますか?

  14. 14

    Elixirには、PEP8やErlangプログラミングルールなどの言語開発者によって公開されたコーディング標準または信頼できるスタイルガイドがありますか?

  15. 15

    コマンドのシェルスクリプトを実行すると、スーパーバイザーの標準出力ログが空になります

  16. 16

    bashスクリプトは、パイプライン内から標準出力をどのように書き込むことができますか?

  17. 17

    リンカは、ストリップされたダイナミックライブラリ内のコードをどのように見つけますか?

  18. 18

    コマンドラインツールにはどのように独自のオートコンプリートリストがありますか?

  19. 19

    Mac OSXのターミナルコマンドラインで「bash」と入力するとどうなりますか?

  20. 20

    セミジョインは、ナチュラルジョイン+プロジェクションとどのように異なりますか?

  21. 21

    ここにある10の記事のリンク、タイトル、著者、タイムスタンプを取得するにはどうすればよいですか?スープの出力はブラウザとは異なります

  22. 22

    標準ライブラリ演算子と競合することなく、関連するクラスのグループの演算子をテンプレートオーバーロードするにはどうすればよいですか?

  23. 23

    JavaScriptではコンストラクター関数とAPIインターフェースはどのように異なりますか?

  24. 24

    「= default」は、デフォルトのコンストラクタおよびデストラクタの「{}」とどのように異なりますか?

  25. 25

    クラスと関数コンストラクタはどのように異なりますか

  26. 26

    C ++標準ライブラリの特定の関数のソースコードはどこにありますか?(Visual Studioのインストール)

  27. 27

    デスクトップ環境でファイルを開くアプリケーションの選択に対応するコマンドラインを見つけるにはどうすればよいですか?

  28. 28

    ターミナルまたはマルチプロセッシングライブラリなしでPythonスクリプトによって使用されるCPUの数を制限するにはどうすればよいですか?

  29. 29

    bashスクリプトでコマンドラインツールの複数のインスタンスを実行するにはどうすればよいですか?+スクリプトのユーザー入力

ホットタグ

アーカイブ