Bashでプログラミング [転載禁止]©2ch.net (264レス)
1-

91
(1): 2015/11/24(火)15:25 ID:xf2Nfg3B(2/5) AAS
echo $'\0'$a
92: 2015/11/24(火)15:35 ID:xf2Nfg3B(3/5) AAS
いや、その条件ならa='e-'にしてrevするべきだろ。
93: 2015/11/24(火)15:38 ID:jlJmLfSH(2/4) AAS
条件は $a に -e が入っている場合なんですが?

もちろん $a には-e だけじゃなくて、-n や -ene や
e-が入っていることもあります。
94: 2015/11/24(火)15:44 ID:jlJmLfSH(3/4) AAS
>>91

a="ab"

$ echo -n $a | wc -c
2

$ echo -n $'\0'$a | wc -c
3

1文字増えちゃってますよ?
95: 2015/11/24(火)15:46 ID:xf2Nfg3B(4/5) AAS
そんな偉そうに言われてもな。89にたいする90の解答って..
96: 2015/11/24(火)15:46 ID:xf2Nfg3B(5/5) AAS
そりゃ増えるよ。見たまんま増やしてるのだから。
97: 2015/11/24(火)16:11 ID:jlJmLfSH(4/4) AAS
? ネタ回答はいらんって話だよ。
98
(1): 2015/11/24(火)23:41 ID:zPMHS13p(1) AAS
Bashでツールを作ったんですけど、ここで紹介するのありですか?
ソースコードはかなりまじめに書いています。
ドキュメントと仕上げでもう少しだけ時間が掛かりそうですけど。
99
(1): ピラフ ◆9Jro6YFwm650 2015/11/24(火)23:51 ID:uXBTKSJE(1) AAS
AA省
100: 2015/11/25(水)00:23 ID:ndEs85Cz(1) AAS
つ 穴を塞ぐ
101: 2015/11/25(水)00:43 ID:cNzVYyHb(1) AAS
>>99
じゃあ、終わったら連絡しますね。
102
(1): 2015/11/25(水)15:14 ID:zaXwxH/w(1/2) AAS
>>72
> while (( i <= 3 )); do
>  echo pilaf
>  (( i++ ))
> done

((i++)) 【let i=++】と
((i+=1)) 【let i=i+1】と
i=$((i+1)) は
厳密には違う。

i=0; ((i++)); echo $? => 1
省7
103: 2015/11/25(水)15:20 ID:zaXwxH/w(2/2) AAS
よく見たらこの例はiが1から始まってるから大丈夫か。
104: ピラフ ◆9Jro6YFwm650 2015/11/25(水)23:57 ID:qKKURXkV(1) AAS
>>102
((φ(・Д´・ *)ホォホォ 勉強になります!!
105: ピラフ ◆9Jro6YFwm650 2016/01/01(金)01:37 ID:OSOvSqc1(1/3) AAS
AA省
106
(1): ピラフ ◆9Jro6YFwm650 2016/01/01(金)01:42 ID:OSOvSqc1(2/3) AAS
曜日の定数を自動生成しちゃう

for i in $(seq 0 6); do
 date -d "$i days" "+%A %w"
done | sort -k 2 | sed -e "s/ /=/" | sed -e "s/^/readonly /"
107
(1): ピラフ ◆9Jro6YFwm650 2016/01/01(金)01:43 ID:OSOvSqc1(3/3) AAS
>>106
結果がこれ
readonly Sunday=0
readonly Monday=1
readonly Tuesday=2
readonly Wednesday=3
readonly Thursday=4
readonly Friday=5
readonly Saturday=6
108: 2016/01/05(火)14:14 ID:tOHAFEvw(1) AAS
>>107

可読性はタイプ数よりも大切だってことが
よく分かるねw
109: 2016/01/05(火)19:46 ID:btsG67QP(1) AAS
bash使うなら曜日名は配列に格納しておいて入ってくる引数を添字として使えばいいんでないの?
110: 2016/02/06(土)12:04 ID:yPG1W7x/(1/3) AAS
PATH の中に空の : があると、カレントディレクトリがコマンドサーチパスに含まれてしまいますが、
環境変数が空であった等の理由により、空の : (ex /usr/local/sbin::/usr/local/bin など)が
パスに含まれてしまうことはよくあります。
カレントディレクトリがコマンドサーチパスに含まれるのはセキュリティーホールになりかねないので、
PATHに空の : が含まれないようにしたいのですが、よい方法はないでしょうか?
111: 2016/02/06(土)15:12 ID:OQYFu5/W(1) AAS
よくあるなんてことはない
112: 2016/02/06(土)15:34 ID:ToE+zhkT(1/2) AAS
変数が空なら何も入れないようにすればいいじゃないですか?
113: 2016/02/06(土)15:37 ID:ToE+zhkT(2/2) AAS
そもそもPATHに使われる環境変数が空であることはありえないはずなんだがね。
普通PATHに使われる変数には、定数として決め打ちのパスが代入されているはず。

なぜならば、空が入る可能性があるということは、
空以外の任意の文字列が入るということだろう?
であれば、環境変数に "./" が入ることがあるかもしれないし
"/malware/" という値が入るかもしれない。

カレントディレクトリだけを不正だって意味は無い。
114: 2016/02/06(土)17:53 ID:yPG1W7x/(2/3) AAS
>空であることはありえないはずなんだがね。

そうなんですか、現在の環境じゃインストール後、マニュアル操作で PATH をいじっていないので、
そういうもんだと思っていたのですが、何か問題があるようですね。
どこでそうなってるいるか調べてみます。
115: 110,114 2016/02/06(土)20:27 ID:yPG1W7x/(3/3) AAS
わかりました。

<アプリ名>_HOME=<アプリのインストールパス> # この <アプリ名>_HOME は関連ツールから参照される
PATH=$PATH:<アプリ名>_HOME/bin

みたいな記述で、最初の 「<アプリ名>_HOME」 のスペルが間違っていました。
このアプリをすぐ使っていれば気づいたはずですが、インストールした後ほかが忙しくて
ほったらかしにしていたので気づかなかったというオチです。
どうもお騒がせしました。
116: 2016/02/09(火)22:51 ID:1eA4ku59(1) AAS
配列の代入(複製)というのはどうやればできるのでしょうか。
117
(2): 2016/03/08(火)14:41 ID:ZfpEki75(1/2) AAS
x='123'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
cat k-m | sed 's/PPP/$z/'
で ファイル k-mのPPP値を3123に変えたいのですが
$zではだめです。
どうしたらいいでしょう。
118
(1): 2016/03/08(火)14:48 ID:B0X8XFR+(1/3) AAS
>>117
読むのだるいからさ?
問題ない所までは省いて
問題があるところだけ書けよ
119: 2016/03/08(火)15:49 ID:ZfpEki75(2/2) AAS
すまん

echo 'port=PPP' > test
cat test
x=2
sed 's/PPP/'"$x"'/' test
は問題ない。

長いファイルではダメなのかな?
120
(1): 2016/03/08(火)17:54 ID:B0X8XFR+(2/3) AAS
cat test の意味は?
必要最小限にしないからわからんのよ。
testの中身の文字もさ、限界ギリギリまで減らしてみて
121: 2016/03/08(火)17:55 ID:B0X8XFR+(3/3) AAS
修正

限界ギリギリまで減らした状態での
動く場合 と 動かない場合 の
2つのパターンを書いてみて
122: 2016/03/10(木)09:06 ID:gEv7eiQN(1/5) AAS
k1の内容が
media_dir=/home/foge/Downloads/
network_interface=eth0
port=PPP
serial=6810
で 、シェルクリプトが 
z=55555
sed 's/PPP/'
123: 2016/03/10(木)09:49 ID:gEv7eiQN(2/5) AAS
あれ 尻切れとんぼ
z=5555
sed 's/PPP/'"$z"'/' k1  の時はOK。
x='123'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
echo $z
sed 's/PPP/'"$z"'/' k1 はだめ
124: 2016/03/10(木)09:57 ID:1kGddc4A(1) AAS
だからね。

動くやつはそれでいいよ。

動かない方、どこまで想定通りに動いているのか?
想定通りに動いているところは省略して、
想定通りに動いていない所だけ書いてって話をしてるんだよ。
125: 2016/03/10(木)10:56 ID:gEv7eiQN(3/5) AAS
了解
echo $z
で確かに$zには想定とおりの値がでてくる。
しかし sed 's/PPP/'"$z"'/' k1 はだめ。
'"$z"' がいけないと思う。 だが 分からない。
126: 2016/03/10(木)11:24 ID:gEv7eiQN(4/5) AAS
きたならしく 一応できた。   ./s4 `./s5` で。
k1 は既出。 minisldaのポートを安全改善のため毎月変えようと思って
cat s4
awk '{sub("PPP", "'$1'" ); print $0;}' k1

cat s5
x='10000'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 10 + $x
echo $z
127: 2016/03/10(木)11:56 ID:NdYWsqwM(1/2) AAS
それは echo ではなく expr が出力している。

z=`expr $y "*" 1000 + $x`
sed "s/PPP/$z/" k1

でいいんじゃないの? これでちゃんと動いたよ。
128: 2016/03/10(木)12:28 ID:gEv7eiQN(5/5) AAS
shellが違うんでしょうね、うちでは 下ではエラー expr: syntax error
z=`expr $y "*" 1000 + $x`
echo $z
使ってるのは OS :armbian で シェルは わからない
129: 2016/03/10(木)22:00 ID:NdYWsqwM(2/2) AAS
多分、勘違いしているのはここ。

z= expr $y "*" 10 + $x

これは一時的に環境を変更した上でコマンドを起動するための構文。
bash の man の 2520 行目辺りに書かれている。
この場合は環境変数 z に空文字列をセットして expr を起動する。
そして、それが終わったらもう z は存在しない。
だから echo では何も出力されない。
130: [sega] 2016/03/25(金)11:08 ID:BrsvjcQb(1/2) AAS
環境変数 $BASH_COMMAND で最後に実行したコマンドが取得できますが
ほんとに最後に実行したコマンドなので
ls | cat
みたいにしたときに当然ながら cat しか取れません

最後に実行したときのコマンドラインに打った文字列
を取得するにはどうしたらよいでしょうか
131
(1): 2016/03/25(金)11:21 ID:Wj6xxs6s(1) AAS
historyあたりで頑張るとか
132
(1): 2016/03/25(金)11:33 ID:BrsvjcQb(2/2) AAS
>>131
ありがとう
historyあたりで頑張ります
133: 2016/03/31(木)08:26 ID:gSxvuyP1(1) AAS
Windows10搭載ってまじかよ
134: 2016/03/31(木)12:19 ID:lhT3jASv(1) AAS
外部リンク:unix.oskp.net

XPとかなbashとかコンパイルしたら
動いたけど、バイナリ互換はすごいな
135
(1): 2016/04/01(金)10:00 ID:+PxKnYGY(1/2) AAS
curlでAPI叩いてるんだけど返事帰ってくるまでCreating..........みたいに....を増やしたい
どういうふうに書けばいい?
136: 2016/04/01(金)10:23 ID:2l1U0Mzg(1) AAS
>>135
別プロセスで実行して、そのプロセスが生きている間
. を増やし続ければいい
137: 2016/04/01(金)10:48 ID:+PxKnYGY(2/2) AAS
1秒ごとにチェックして生きてたら....を出力死んでたらそのままみたいなことか
やってみるわ
138: 2016/04/01(金)16:24 ID:YrmxN89w(1) AAS
windowsでbaプロできるようになるみたいですね(´・ω・`)
139: 2016/04/01(金)19:49 ID:opN9G6gR(1) AAS
HOGEDIR="${HOME}/path/to/directory" のように既存のディレクトリへのpathを変数に入れたら下記のような感じで実在チェックした方がいいんでしょうか?
自分は転ばぬ先の杖だと思って(事実、何度かtypoしてます)書くようにしていますが……

if test ! -d "$HOGEDIR"; then
    echo '$HOGEDIR is *NOT* a Directory!' 1>&2
    exit 1
fi
140
(1): 2016/04/01(金)20:48 ID:pqGjBE9F(1) AAS
変数に入れるかどうかは実在チェックの必要性に変化を与えるものではない
141: 2016/04/01(金)21:01 ID:FfS85Ldg(1) AAS
だがその実在性が極めて疑わしい性的な穴隙に変化を与えられた私はそれに入れる事を夢想し夢精するものである
142: 2016/04/02(土)12:51 ID:2K6xkzqa(1) AAS
セキュリティにも穴はあるんだよな・・・
143: 2016/05/09(月)14:51 ID:tGlvk2AC(1) AAS
exec 3>$1
みたいにファイルディスクリプタを指定するとき
すでに使われるディスクリプタ番号を避けたいんだけど
どうしたらいいの?
144: 2016/05/09(月)15:18 ID:1X5m9uCK(1) AAS
Bash詳説みたいな本ないかな?
やっぱオライリーか…
145
(1): 2016/05/10(火)04:31 ID:D4kfzW96(1) AAS
open とか、複製する dup でも、未使用のファイルディスクリプタを使う
146: 2016/05/22(日)16:49 ID:q7UTLg4q(1) AAS
SoftwareDesign 6月号、1,220円 + 税

特集、Bash 再入門・MySQL
147
(1): 2016/05/22(日)17:04 ID:uBlhVZDB(1) AAS
>>145
どうやって?
148: 2016/05/23(月)08:00 ID:MmvCX7kr(1) AAS
最近の言語に慣れると
コマンドラインベースの言語って理解しにくいね
コマンドを文字型変数として理解しようとしてハマる
149
(1): 2016/05/25(水)19:15 ID:A0i8LpMi(1) AAS
debianとかubuntuにはwhiptailなんてのがデフォルトであるらしい
今まで選択候補をcat -b >&2してからread REPLY </dev/ttyしていたのをさっそく書き換えてみた
けっこうすっきり書けて個人的には大満足
150
(1): 2016/07/19(火)14:21 ID:W6/OJD/n(1) AAS
コンソールにできたバイナリを16進で出力するにはどうしたら良いですかね
151: 2016/07/19(火)15:29 ID:yBnV/0hR(1) AAS
>>150
hexdumpやodで出力すればいいんじゃないですかね
152: 2016/09/07(水)13:04 ID:Zv6pU7x4(1) AAS
背景色を一気に変更したい
153: 2016/09/08(木)01:20 ID:4a9rtSBz(1) AAS
「linux 端末 色」で検索!
154
(2): 2017/11/07(火)14:00 ID:3IDunlyg(1) AAS
関数を定義したshファイルを実行したあと、その関数を使いたいんだけど
どうしたらいいの?
155: 2017/11/07(火)14:24 ID:As8jAu29(1) AAS
>>154
汎用的に使う関数なら ~/.bashrc に書いて
あとは普通に関数名で実行すればいいだけ
function foo {
}

ならfooで呼び出し。
156: 2017/11/08(水)06:57 ID:N8l/Vn75(1) AAS
>>154
.
157: 2017/12/29(金)13:13 ID:S/CsVkMC(1) AAS
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

2UMY6SSHSE
158: 2018/02/15(木)07:37 ID:m3isa15O(1) AAS
☆ 私たち日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
159: 2018/05/22(火)11:10 ID:Czl6p0FW(1) AAS
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

FOJ8E
160: 2018/08/15(水)15:18 ID:dfDlag4t(1/4) AAS
てst
161: 2018/08/15(水)15:20 ID:dfDlag4t(2/4) AAS
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを html改行コードに変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
162: 2018/08/15(水)15:21 ID:dfDlag4t(3/4) AAS
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを < b r >に変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
163
(1): 2018/08/15(水)17:04 ID:dfDlag4t(4/4) AAS
解決しました

なぜか sed のパイプで変換できなかった

trのパイプで変換してなんとかなりました

なぜだろう?
164
(1): 2018/08/16(木)19:43 ID:I7VrLkNo(1) AAS
>163
sedで改行をどうこうするのは意外とハイレベルな知識が要るからかな
単に改行を置換したいだけならtr使うほうが筋がいいと思う
165: 2018/08/17(金)21:35 ID:jq4Ra/PN(1) AAS
>>164
urlエンコードから飛んできた文字列をURLデコードした後の文字列はecho
なんかで出力しても隠れてみえない \n が見えない
アスキーコードで書かれた文字列はsedじゃ無理?のようなきがする
166: 2018/08/17(金)21:45 ID:x+SQYw9w(1) AAS
POSIXのコマンドも今の人達が再設計すれば
もっと良いものが作れるんだろうな
167: 2018/08/18(土)00:38 ID:hWfi1+lO(1) AAS
素直にUnix2dos、dos2unix使おう、な?
168: 2019/05/21(火)23:09 ID:oXRLq/xt(1) AAS
eval使って文字列内で実行するコマンドの返却値も標準出力も取りたいんですがどうしたらいいですか?

evalに渡すのはcurlでhttp取得なんですがurlが変わるのでそこを変数から実行したいんですが$?はevalの結果でcurlのものが取れないんです
169
(1): 2020/01/02(木)23:47 ID:Vb52hemx(1) AAS
mysqlで特定の接頭辞がつくテーブルを検索し一括で削除したいのですが、クォーテション処理でうまく動作してくれません

grepで特定の接頭辞を検索してxargsで引数を渡してるのですが、xargs以降のエスケープしたりシングル・ダブルクォートと入れ替えたり
してるのですがうまくいきません。(-pで実行コマンドも確認しました。)
どなたかうまい書き方が分かる方いませんか?

mysql -u ユーザー名 -p -e 'SHOW TABLES FROM テーブル名' |grep 接頭辞_* |xargs -pI '{}' mysql -u ユーザー名 -p -e 'DROP TABLE テーブル名.\'{}\''
170
(1): 2020/01/04(土)17:21 ID:E3O62f92(1) AAS
実際に使って知ってる人が助けてくれるんじゃないかと思って見てたけど来ないね。
まあ、「うまくいきません」だけじゃ無理か。
同様なことを SQLite でやるとしたらこんな感じかな。

dbname='test.db'
prefix='a'
echo .table | sqlite3 "$dbname" | tr -s ' ' '\012' |
sed -e "/^$prefix/!d" -e 's/^/drop table / ; s/$/;/ ;' |
sqlite3 "$dbname"

一般的な話として、引数で渡すためにはシェルの文法に従う必要があるから
それを大変だと思うならパイプを使えばいいと思うよ。
省2
171: 2020/01/05(日)20:01 ID:IPuUazgK(1) AAS
そもそも何が問題なのかわからんしなぁ
xargs使う理由もわからんし。俺ならそんな使い方しない。
たくさんのDROP TABLE文で埋め尽くされたSQLファイルを作ってを実行するとかさぁ
いやテーブル名羅列するだけでいいのか

grepでテーブル名引っ張るとかあり得んし。
SHOW TABLES FROMはこの場合に適切なんだっけ?
ああ、思い出したINFORMATION SCHEMA.TABLESとかあったなぁ

ともかくシェルスクリプトでやることじゃないよね
なんのために問い合わせが得意なRDBMS使ってるのさ?
172
(1): 2020/01/06(月)00:00 ID:FtTPVMr3(1) AAS
「LIKE」句を使って、テーブル名で絞り込む。
最後に「meta」で終わるテーブルだけを表示したい

mysql> SHOW TABLES FORM wordpress LIKE "%meta";

「mysql show tables」で検索!
173: 2020/01/08(水)21:40 ID:l1od5Fw+(1) AAS
>>170 171, 172
レスが遅くなって申し訳ありません。

CMSのインストール・削除のトライアンドエラーを
繰り返しているうちにテーブルが増えてきてしまった次第です。

やりたいことは、たくさんあるテーブルの中から
特定の接頭辞が付くテーブルだけを検索し削除したいです。

`drop table from 〇〇`でググるとかなりの割合の方が
bashでmysqlのコマンドを書いて力技で削除しているようでした。
当方もそれに習って色々試したのですが、
うまく動作せずに困っておりました。
省2
174
(1): 2020/01/08(水)22:01 ID:i7Ggys1A(1) AAS
なんでわざわざ手間がかかることするかね?自動化したいんじゃないだろ?
>>172みたいに該当するテーブル一覧でもだして、テキストエディタでも使って

drop table from table1
drop table from table2
drop table from table3

とかいうSQL作って、それを実行すりゃいいやん

シンプルにしたいんだろ?なんでわざわざxargsとか使って複雑なものを作ろうとしてるんだ

自動化したいなら↑の内容を一つづつ自動化しろ。いっぺんにやろうとすんなよ。
省6
175: 2020/01/09(木)15:44 ID:2gXyzp52(1) AAS
>>174
詳しいアドバイスありがとうございます!
本当に目から鱗です。

レスを見て2分で解決しました。
bashで力技で何時間も悪戦苦闘していたのが
悲しくなるくらい呆気なさでした。

本当に的確なアドバイスありがとうございます!
176: 2020/02/09(日)12:27 ID:TdA6OoR0(1) AAS
やってることが複雑になったと感じたら、最初に戻って考え直すことだ。
177: 2020/09/12(土)14:17 ID:uRW97DpA(1) AAS
バッシュの教科書って本買おうとしたけど、どこでも売り切れてて人気みたい
178: 2020/09/12(土)15:05 ID:f1Nswvqc(1) AAS
売れなかったから廃盤になるんやで
179: 2021/05/27(木)01:02 ID:m06R9ufF(1) AAS
こういったケースの空白文字がある場合のワンライナーはどう書けばいいですか??

・特定のディレクトリの中にある大量のファイル
・ファイルは全て同じ拡張子(.mp3)
・拡張子の直前にランダムのID何文字か付いている(例 -48antiO81n5Dq)
・全てのIDを取り除きリネームしたい
自分で作成したのですが最後のmvで躓いています。。
空白文字があるとそこでファイル名を分割されてうまく動作しません。
```bash
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$"|sed "s/\-[a-zA-Z0-9-]*.mp3$/.mp3/"|xargs -n2 mv
```
180: 2021/05/27(木)12:15 ID:+SArHOBh(1) AAS
慣れてる人ならともかくリネームとかいう取り返しのつかない作業を
findとxargsでやりたくないな
俺ならリスト生成してmvするわ

mv "aaa aaa-48antiO81n5Dq.mp3" "aaa aaa.mp3"
mv "bbb bbb-48antiO81n5Dq.mp3" "bbb bbb.mp3"
mv "ccc ccc-48antiO81n5Dq.mp3" "ccc ccc.mp3"

みたいなシェルスクリプトを生成して実行する
実行前に目視で確認できるし、場合によっては手動で修正すればいいし
181
(1): 2021/05/27(木)13:40 ID:EyeK5jGy(1) AAS
そもそもファイル名に空白が入ってなければ正しく動くのか?

aaa-48antiO81n5Dq.mp3
bbb-48antiO81n5Dq.mp3

というファイルがあったら sed の出力は

aaa.mp3
bbb.mp3

となるように思うのだが。いろいろつっこみたいが、とりあえず
find . -type f | xargs -d '\n' rename 's/-[a-zA-Z0-9-]*\.mp3$/.mp3/'
とするのが手っ取り早いと思う。
でもいきなりこんなことはしたくないね。
省1
182: 2021/05/28(金)15:39 ID:RtkQ3VQL(1) AAS
どこに空白が入っているの?

例示して
183: 2021/06/04(金)21:38 ID:i0A1vKtk(1) AAS
空白入るなら、ダブルクォートをエスケープして入れてやればいい、と。

そもそもxargs使わんといけんの?
ふつうにこんなんじゃだめか?
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$" \
| while read i;do \
echo mv -v \"$i\" \"`echo $i|sed '"s/\-[a-zA-Z0-9-]*.mp3$/.mp3/'`\"; \
done

で、そもそもfind使うなら、-nameじゃなくて-regex使った方がよくない?
grepはそのためだよな?(ってまあ、俺もgrep使うような気がするけどw)
で、さらにfind使うなら、xargsよりは-execの方がベターだ。
省4
184: 2021/11/11(木)18:26 ID:wR3FRIZb(1) AAS
(´-`).。oO(>>1 は、いなくなったか…)
185: 2022/01/11(火)19:24 ID:JlzCBGqO(1) AAS
if文で文字列を正規表現にマッチしたら抽出、という処理を作りたいのですが、
マッチしたら一つ目の文字列は抽出出来ましたが、二つ目以降マッチしたものが抽出できません
どうコードを書けば良いのでしょうか
186: 2022/01/12(水)22:51 ID:uKLEW53q(1/2) AAS
[[ foo-bar =~ (foo)-(bar) ]] && echo ${BASH_REMATCH[2]}
的な?
0にマッチ全体、カッコでグループ化すればn番目の部分マッチが1以降に入る
barが出るはず
187: 2022/01/12(水)23:04 ID:uKLEW53q(2/2) AAS
推測だけど、一つ目のマッチだけ見えているんじゃなく、全体のマッチだけ見えてるんじゃないか?
配列変数を添字なしで参照すると0番目の要素が返る、よくある罠

$BASH_REMATCH
= ${BASH_REMATCH[0]}
= foo-bar

違ったらすまん
188: 2022/06/20(月)21:01 ID:y2PJqfx1(1) AAS
nnn=111;mmm=0;echo $nnn | read mmm;echo $mmm
0
なんで?
189: 2022/06/29(水)00:20 ID:X2h/MJK6(1) AAS
昔からあるバグです
190
(1): [sega] 2024/02/24(土)13:44 ID:NO8gqPUT(1) AAS
UIDとEUID を食い違いさせる方法って どんなのがありますか?
1-
あと 74 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s