最後のパラメータより前のパラメータを"$@"で取り出す
2023-10-17 18:24:40
質問
私は、コマンドラインから与えられた最後のパラメータを変数に抽出し、他の場所で使用するBashスクリプトを作成しようとしています。 以下は、私が取り組んでいるスクリプトです。
#!/bin/bash
# compact - archive and compact file/folder(s)
eval LAST=\$$#
FILES="$@"
NAME=$LAST
# Usage - display usage if no parameters are given
if [[ -z $NAME ]]; then
echo "compact <file> <folder>... <compressed-name>.tar.gz"
exit
fi
# Check if an archive name has been given
if [[ -f $NAME ]]; then
echo "File exists or you forgot to enter a filename. Exiting."
exit
fi
tar -czvpf "$NAME".tar.gz $FILES
最初のパラメータは任意の数でよいので、最後のパラメータを抽出する方法を見つけなければなりません (例: compact file.a file.b file.d files-a-b-d.tar.gz). 今のままでは、アーカイブ名が圧縮するファイルに含まれてしまいます。 これを行う方法はありますか?
どのように解決するのですか?
配列から最後の項目を削除するには、次のような方法があります。
#!/bin/bash
length=$(($#-1))
array=${@:1:$length}
echo $array
さらに短い方法
array=${@:1:$#-1}
しかし、アライは バシズム なので、なるべく使わないようにしましょう :(
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] パラメータを取るBashのエイリアスを作る?
-
[解決済み] Bash関数にパラメータを渡す
-
[解決済み] setTimeout()コールバックにパラメータを渡すにはどうすればよいですか?
-
[解決済み] Bashで部分文字列を抽出する
-
[解決済み] ディレクトリをTarするが,完全な絶対パスはアーカイブに保存しない
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Git のコマンドライン・インターフェイスの言語を変更するにはどうしたらよいですか?
-
[解決済み] Makefileでシェルコマンドを使用する方法
-
[解決済み] スクリプトの実行に関連したファイルの参照
-
[解決済み] bashのcurlステートメントに'&'文字を含める方法
-
[解決済み] bash で "set -o nounset" を使用したときに変数が設定されているかどうかをテストする。
-
[解決済み] ファイルを分割する方法。重複
-
[解決済み] WindowsのバッチとLinuxのBashの両方で実行できるスクリプトは?
-
[解決済み] 最終編集日順のファイル一覧
-
[解決済み] Bash。フォルダ構造を保持したまま再帰的に名前付きファイルをコピーする
-
[解決済み] bashスクリプトの実行中に出力を強制的にファイルに出力する。