X



トップページLinux
122コメント40KB

シェルスクリプト質問スレ

0001login:Penguin
垢版 |
2019/04/12(金) 20:22:09.78ID:ga+nyK60
シェルスクリプトに関する質問スレです。
0102login:Penguin
垢版 |
2022/02/24(木) 04:29:15.80ID:zujeXimD
なんのためにそうしたいのか聞いただけでこの反応w
やることが目的になってんのな
0103login:Penguin
垢版 |
2022/02/24(木) 05:06:58.27ID:36R3x1i1
なにがどうシェルスクリプトに関連するのか全然わからん
0104login:Penguin
垢版 |
2023/04/29(土) 15:20:27.08ID:lnHHFRE1
<main>
<sub_aaa id=A>
<sub_bbb>
</sub_bbb>
</sub_aaa>
<sub_aaa id=B>
<sub_ccc>
</sub_ccc>
</sub_aaa>
</main>


A.xml B.xml
<main> <main>
<sub_aaa id=A> <sub_aaa id=B>
<sub_bbb> <sub_ccc>
</sub_bbb> </sub_ccc>
</sub_aaa> </sub_aaa>
</main> </main>

と言った感じで<sub_aaa>タグ毎にファイル出力する方法教えてください。
0105login:Penguin
垢版 |
2023/04/29(土) 19:13:08.50ID:lnHHFRE1
すみません
スペースで埋めたところがスペース1個文しかインデントできてなくて見にくくてすみません。
0106login:Penguin
垢版 |
2023/04/30(日) 10:10:26.58ID:aW8IbgMG
シェルスクリプトって文字列を""で囲まなくてもいいんですか?
0107login:Penguin
垢版 |
2023/05/01(月) 10:46:14.14ID:+eCh8O00
>>104

cat ab.xml | sed -n '/<sub_aaa/,/<\/sub_aaa/'p | awk -F[=\>] '/<sub_aaa/{OUT=$2}{print $0 >> OUT".xml"}'
0109login:Penguin
垢版 |
2023/08/03(木) 22:45:13.09ID:NDiGHoK1
シェルスクリプトで教えてください

ファイル中の文字について、以下のような置換をしたいです
前 後
a →X
b →U
c →E
d →P
:::
y →A
z →M

前と後は1:1なのですが、変換後の並びは不規則です

sed -e 's/a/X/g' -e 's/b/U/g' 〜〜〜 とaからzまで並べることで
一応置換はできるのですが、長大な行となってしまっており、
どうにかならないかと思ってます
0110login:Penguin
垢版 |
2023/08/08(火) 20:00:07.01ID:A0ngI8KS
trコマンドが良いよ
0111login:Penguin
垢版 |
2023/08/08(火) 22:07:51.95ID:W7teOVBr
>>109
cat filename | tr [a-z] [XUEP〜AM]
というのはどうだろう
0112login:Penguin
垢版 |
2023/09/21(木) 10:24:58.83ID:QknJaCcR
mvを常にmv -iで実行するようにしたいのですがどうすればいいですか
0113login:Penguin
垢版 |
2023/09/21(木) 18:47:10.64ID:Vez6r55J
>112
"常に"がどういう意味かによる
ターミナルから自分の手でmvするとき常になのか、自分のユーザー名でmvするとき常になのか、全てのユーザーがmvするとき常になのか
たぶん下記のようにすればいいんだろうけどなにか副作用があるかもしれない

$ cat ~/.bashrc
mv() { command -p mv -i "$@"; } #or mv() { /usr/bin/mv -i "$@"; }

$ cat ~/bin/mv
#!/bin/sh
/usr/bin/mv -i "$@"

$ cat /usr/local/bin/mv
#!/bin/sh
/usr/bin/mv -i "$@"
0114login:Penguin
垢版 |
2023/09/22(金) 17:12:51.79ID:Ot0FYrO8
ありがとうございます
なるほど、あまり影響が大きいのは怖いですね、一番上がよさそうですね
強制的にリネームするときはmv -fとやるという運用を考えています
0115login:Penguin
垢版 |
2024/01/01(月) 04:07:52.94ID:U28b5u0i
コマンドラインより与えられ、$1や$2等に入れられたオプションを
以下のように表示したいと思ってます

./aaa.sh a bb ccc
$1=a
$2=bb
$3=ccc

以下のようなスクリプトで「$n=」まではできたのですが、その後のxxxxにあたる、
位置パラメータを示す$と、変数iを組み合わせてできた「$1」を
更に評価した結果である「a」や「bb」を得る方法が分かりません

#!/bin/bash
for i in `seq 1 $#`; do
echo "\$${i}=xxxx"
done

どのようにすればよいか教えてください
0116login:Penguin
垢版 |
2024/01/01(月) 21:58:23.87ID:d2imTNCC
>115
やりたいことを実現するだけなら、難しく考えずに最初の引数を表示したらshiftすればいいと思う

for i in $(seq 1 $#)
do
    echo "\$$((i))=\"${1}\""
    shift
done
0117login:Penguin
垢版 |
2024/01/31(水) 20:12:54.00ID:E0KTKxgk
引数が無限みたいな前提の書き方はやめた方がいい
0118login:Penguin
垢版 |
2024/01/31(水) 20:15:40.65ID:E0KTKxgk
>>115
オプションの概念がないのか?
引数の順番だけで判断すると、複雑なものになって想定外の使われ方、使い方をしてしまう
0119sage
垢版 |
2024/02/01(木) 04:56:02.13ID:Qr69cuyL
#/bin/sh
for i in `seq 1 $#`; do
eval echo \\\$$i=\$${i}
done
0120login:Penguin
垢版 |
2024/02/23(金) 20:08:14.18ID:rMPWJsz1
ラズパイOSの起動時にシェルが自動で動くよう試しています
打ち込みでシェルの内容が動くことは確認できるのですが、cronやsystemd では、思うように動きません。シェルの内容がおかしいのでしょうか

#!/bin/sh
cd /home/dtt/google-home-player/
nohup lt -s modulenotfound -p 3000 >/dev/null 2>&1 &
nohup /usr/local/bin/node server_for_line.js >/dev/null 2>&1 &
0121login:Penguin
垢版 |
2024/02/24(土) 23:29:05.40ID:gz5QbA2v
nohupコマンドを使っているが、フォアグラウンドとバックグラウンドもわかってないのかな?
0122login:Penguin
垢版 |
2024/02/25(日) 21:48:03.30ID:yfGJdlYS
>>121
hpのコピペなんで。systemdとforeverで分けて
レスを投稿する


ニューススポーツなんでも実況