見出し画像

備忘録 シェルスクリプト

備忘録です。
ファイルの拡張子を変えたいだけなのになかなかたどり着けなかったので。

シェルスクリプト

#!/bin/bash

clear
echo ${0##*/} $*
echo ''
echo 'please input "argtest -option /path1/path2/path3/file.ext"'
echo ''
echo '==================================='
echo '全部の引数を扱う'
echo '==================================='
echo '$* = ' $*
echo ''
echo '$@ = ' $@
echo ''

echo '引数繰り返し'
echo 'for arg in "$@"; do'
for arg in "$@"; do
  echo ${arg}
done
echo ''

echo 'for arg in "$*"; do'
for arg in "$*"; do
  echo ${arg}
done
echo ''

echo '==================================='
echo '引数を個別に扱う'
echo '==================================='
echo 'コマンド名の取り出し'
echo '${0} = ' ${0}
echo ''

echo '第1引数の取り出し'
echo '${1} = ' ${1}
echo ''

echo '第2引数の取り出し'
echo '${2} = ' ${2}
echo ''

echo '==================================='
echo 'パス文字列を操作する'
echo '==================================='
echo '第2引数からパスを取り出し'
echo '${2%/*} = ' ${2%/*}
echo ''

echo '第2引数からルートを取り出し'
echo 'aaa=${2#*/}'
aaa=${2#*/}
echo 'aaa='${aaa}
echo '/${aaa%%/*} = ' /${aaa%%/*}
echo ''

echo '第2引数からファイル名を取り出し'
echo '${2##*/} = ' ${2##*/}
echo ''

echo '2引数から拡張子を取り出し'
echo '${2##*.} = ' ${2##*.}
echo ''

echo '第2引数から拡張子をカット'
echo '${2%%.*} = ' ${2%%.*}
echo ''

echo '第2引数からベース名を取り出し'
echo 'bbb=${2##*/}'
bbb=${2##*/}
echo 'bbb='${bbb}
echo '${bbb%.*} = ' ${bbb%.*}
echo ''

echo '==================================='
echo '# と % の使い方'
echo '==================================='
echo '先頭から検索して最初に見つけた/までをカット'
echo '${2#*/} = ' ${2#*/}
echo ''

echo '先頭から検索して最後に見つけた/までをカット'
echo '${2##*/} = ' ${2##*/}
echo ''

echo '末尾から検索して最初に見つけた/までをカット'
echo '${2%/*} = ' ${2%/*}
echo ''

echo '末尾から検索して最後に見つけた/までをカット'
echo '${2%%/*} = ' ${2%%/*}
echo '==================================='

実行結果

argtest -option /path1/path2/path3/file.ext

please input "argtest -option /path1/path2/path3/file.ext"

===================================
全部の引数を扱う
===================================
$* =  -option /path1/path2/path3/file.ext

$@ =  -option /path1/path2/path3/file.ext

引数繰り返し
for arg in "$@"; do
-option
/path1/path2/path3/file.ext

for arg in "$*"; do
-option /path1/path2/path3/file.ext

===================================
引数を個別に扱う
===================================
コマンド名の取り出し
${0} =  /data/data/com.termux/files/usr/bin/_local/argtest1引数の取り出し
${1} =  -option

第2引数の取り出し
${2} =  /path1/path2/path3/file.ext                           
===================================                           パス文字列を操作する
===================================
第2引数からパスを取り出し
${2%/*} =  /path1/path2/path3

第2引数からルートを取り出し
aaa=${2#*/}
aaa=path1/path2/path3/file.ext
/${aaa%%/*} =  /path1

第2引数からファイル名を取り出し
${2##*/} =  file.ext

第2引数から拡張子を取り出し
${2##*.} =  ext

第2引数から拡張子をカット
${2%%.*} =  /path1/path2/path3/file

第2引数からベース名を取り出し
bbb=${2##*/}
bbb=file.ext
${bbb%.*} =  file

===================================
# と % の使い方
===================================
先頭から検索して最初に見つけた/までをカット
${2#*/} =  path1/path2/path3/file.ext

先頭から検索して最後に見つけた/までをカット
${2##*/} =  file.ext

末尾から検索して最初に見つけた/までをカット
${2%/*} =  /path1/path2/path3

末尾から検索して最後に見つけた/までをカット
${2%%/*} =
===================================

上記に掲載したシェルスクリプトです。

この記事が気に入ったらサポートをしてみませんか?