タグ付けされた質問 「ksh」

Kornシェル(ksh)は、高度なスクリプト機能を備えたシェルであり、商業用のuniceおよび一部のBSDシステムで一般的に使用されていますが、Linuxではほとんど使用されていません。

3
配列を関数に渡す最も正しい方法は何ですか?
私が非常に大きな配列を持っていると考えてください$large_list、配列を引数としてとる関数を書く方法はありますか?例えば: echo_idx_array () { arr="$1" idx="$2" echo "${arr[$idx]}" } そのようなことをするための通常の戦略は何ですか?変数を指定してみまし$large_listたが、空でした。 引数リストの変更に合わせて関数を変更するつもりです。 記録のために、私はksh88を使用しており、可能な限りポータブルな答えを探しています。 編集:これまでのところ私が思いつくことができる最善の方法は、配列をループして、各要素を関数の引数として送信することです。これは信じられないほど醜く、エラーが発生しやすいようです。言うまでもなく、すぐに制限に達します。これが私がしたことです: foo () { echo $* } cmd="foo " while [[ $i -lt $MAX_ARR_SIZE ]]; do cmd="$cmd ${large_list[$i]}" ((i=i+1)) done eval $cmd 何か良いことはありませんか?
8 shell  ksh  array 

5
KornシェルでサブシェルのPIDを取得する方法($ BASHPIDと同等)
bashでは、この便利な変数があります。$ BASHPIDは常に、現在実行中のサブシェルのPIDを常に返します。kshでサブシェルのPIDを取得するにはどうすればよいですか?たとえば、次のコードを参照してください。 #!/usr/bin/ksh93 echo "PID at start: $$" function run_in_background { echo "PID in run_in_background $$" run_something & echo "PID of backgrounded run_something: $!" } function run_something { echo "*** PID in run_something: $$" sleep 10; } run_in_background echo "PID of run in background $!" これは以下を出力します: PID at start: 5328 …

4
RHEL 6およびCentOS 6にpdkshがありませんか?
をpdksh介してインストールしようとすると、RHEL 6またはCentOS 6にパッケージが存在しませんyum。 だから私の質問: デフォルトのリポジトリで使用できなくなったのはなぜですか?バージョン5.xで使用できます。 代替シェルはありますか? 依存するプログラムはどうpdkshですか?交換用シェルを使用できますか? 私の回避策は、バージョン5のパッケージを使用することでしたが、これは適切な解決策ではないと感じ、回避策よりもよく理解する必要があります。 私の懸念は主にOracleデータベースに関するものです。それは求めるpdkshので、それ以外の置換シェルを使用することは問題になりpdkshますか?
8 centos  rhel  yum  ksh 

4
シェルプログラミング、一時ファイルの回避
私はよく同じパターンに従ってKSHシェルスクリプトを作成します。 (1)1つ以上のコマンドから出力を取得する (2)grep | cut | awk | sedを使用してフォーマットし、画面またはファイルに出力します そのために、(1)の出力を一時ファイルに保存し、そのファイルに対して(2)でフォーマットを行うことがよくあります。 そのコードを例にとります: TMPFILE=file.tmp # If tmpfile exists rm it. [ -f $TMPFILE ] && rm -f $TMPFILE for SERVICE in $(myfunc); do getInfo $SERVICE > $TMPFILE # Store raw output in the TMPFILE # I retrieve the relevant data from the …
8 shell  scripting  ksh 

2
kshに実装された貧乏人のGNU Parallel?
私は、GNU Parallelの機能を使用して、コマンドとそれが並列に供給されるリストを実行し、すべての完了後にそれを吐き出すことができるようにしたいのですが、すべてのサーバーにGNU Parallelをインストールしたくありません。 または、おそらく並列バージョンxargsですか? GNU Parallelが行うことのksh実装はありますか?この場合、すべての出力をパイプまたは格納できる限り、GNU Parallelのように順番に実行する必要はありません。一時ファイルの使用も避けたいです。

2
OpenBSDのkshに「クリア」ホットキーとしてCtrl-Lを追加
私が使用する方法を探してきたCtrl- Lではなく、タイピングのモニターをクリアするclearたびに。私には機能しないパッチ以外は何も見つかりませんでした。OpenBSDボックス(シェルとしてkshを使用)にホットキー/ショートカットを追加するにはどうすればよいですか? [*] OpenBSDのksh.kshrc [*] Ctrl-l in hex = 0xc: #キーを読み取る; echo -n $ key> file.txt; hexdump file.txt ^ L 0000000 000c 0000001 #

1
kshが廃止された理由-eq
kshの最新バージョンはブロック-eq内での使用を廃止し[[ ]]、(( ))代わりに使用することを推奨します。どうしてこれなの?どこ(( ))より[[ ]]も優れていることについてのドキュメントは見つかりません。その構文はかなり明白です。 例えば: #!/bin/ksh var=1 if [[ $var -eq 1 ]] then echo ALPHA fi 与える [adam@hendrix test]$ ksh -n test.sh test.sh: warning: line 3: -eq within [[...]] obsolete, use ((...))

5
同じユーザーの異なるセッションに対して個別のコマンド履歴を作成するにはどうすればよいですか?
一部のUnixサーバーでこの問題に直面しています。同じユーザーに対して異なるセッションを開くと、コマンド履歴がすべてのセッションで共有されます。これにより、誤って、Ctrl-Pまたはup arrow単にEnterキーを押すと問題が発生します。ある場合にrm -rf *は、ありがたいことにファイルを削除する権限のないディレクトリで実行してしまいました。 同じユーザーの異なるセッションに対して個別のコマンド履歴を作成するにはどうすればよいですか?ほとんどの場合、私はkshおよびtcshシェルを使用しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.