19/10/21 22:08:16.20 /woRRfjw.net
>>934
そもそもAがファイルを消せるようにパーミッションが初めから設定されるようには出来ないの?
950:デフォルトの名無しさん
19/10/21 22:24:13 Ol8k0rNq.net
>>934
ファイルを削除するだけの実行ファイルを作ってsetuidビット立てて所有者をBにするとかすればできないかな?
951:デフォルトの名無しさん
19/10/21 22:25:13 Ol8k0rNq.net
追記。シェルスクリプト自体にはsetuidは使えない。
952:デフォルトの名無しさん
19/10/21 22:52:13.48 pvaospDZ.net
Fedora10って10年前のかっ
su: must be run from a terminal
にならんのだったらsuでいいんじゃないの。パスワード流すのは exec ででも
953:デフォルトの名無しさん
19/10/22 00:44:01 7OkeLCGH.net
ディレクトリにwが付いてればファイルは消せるけどなあ
954:デフォルトの名無しさん
19/10/22 02:43:55 T9lP8zyy.net
>>936
パーミッションは変えない方針でいきたいですね
>>937
setuidという単語を初めて見たので、のちほど調べてみます。
>>939
su - <<EOF
password
EOF
は試しましたが、ttyを経由しろ的なメッセージで怒られました
調べたところttyなしを許可する設定がsudorsにあるらしいですが、sudoは設定したくないため、できなそうです
955:デフォルトの名無しさん
19/10/22 09:04:44.04 xSNqVMSD.net
>>941
# mkdir /dir
# chown userA:groupA /dir
# chmod 700 /dir
# cp /bin/rm /dir/rmB
# chown userB:groupB /dir/rmB
# chmod 6755 /dir/rmB
userA $ /dir/rmB /home/userB/file
956:デフォルトの名無しさん
19/10/22 10:51:03.29 p4xpj08d.net
こんな文字列野中に含まれる数字を
ゼロパディングしたいと思います
"何とかって講義 第5回 何とか特集.mp3"
まずは2桁でそろえてやりたいのですが
grep "第[1-9]回"
で一桁のものを引っ掛けて
前後をsedで除いて
sed "s/.*第//g
sed "s/回.*//g"
ゼロ埋めはprintfで実現しようと思うのですが
printf %02d $times
もっとシンプルな方法は無いでしょうか?
957:デフォルトの名無しさん
19/10/22 10:52:23.81 p4xpj08d.net
なお最終的な文字列の組み立てなおしは
数字の前後も抽出して3つを連結するつもりです
958:デフォルトの名無しさん
19/10/22 11:04:28.98 +cbyszgy.net
perl5 が使えるなら
echo "何とかって講義 第2345回 何とか特集.mp3" | perl -pe 's/第(\d+)回/ sprintf "第%06d回", $1/exm'
何とかって講義 第002345回 何とか特集.mp3
959:デフォルトの名無しさん
19/10/22 13:09:31.40 QfoZv31s.net
$ echo "何とかって講義 第2345回 何とか特集.mp3" | sed -E 's/第([0-9]+)回/第000000\1回/; s/0*([0-9]{6})/\1/'
6桁揃えにしたければ最初に6個0を足して次に6桁のみ残す
$ rename -n 's/\d+/sprintf("%06d",$&)/e' *.mp3
rename utilityが使えるならsprintfが使える
960:デフォルトの名無しさん
19/10/22 15:10:24.02 W8s8s9Eh.net
perlもrenameもPOSIX規格外
961:デフォルトの名無しさん
19/10/22 15:18:54.31 AwOtA+WM.net
みんな真偽値ってどうしてる?
962:デフォルトの名無しさん
19/10/22 15:21:29.60 p4xpj08d.net
>>945-946
ありがとうございます
perlは入っており期待通りに動作しました
perlの方が高機能なのですが
環境を移したときにperlがあるか保証できないため
sedでやろうと思います
963:デフォルトの名無しさん
19/10/22 15:23:02.88 AwOtA+WM.net
FLAG=true or false ?
FLAG=1 or 0 ?
FLAG=1 or unset ?
FLAG=1 or "" ?
それ以外?
964:デフォルトの名無しさん
19/10/22 20:26:37.95 2f71vpaR.net
alias FLAG true/alias FLAG false
if FLAG; then
965:デフォルトの名無しさん
19/10/22 20:27:08.55 2f71vpaR.net
でもBashだとファイル内では既定で使えない。
966:デフォルトの名無しさん
19/10/22 21:23:51.15 CciDAIxr.net
>>952
面白いけど、サブシェルの中で変えられないから
alias FLAG=true
(
alias FLAG=false
if FLAG; then
echo true
fi
)
出力
true
967:デフォルトの名無しさん
19/10/23 10:43:57.77 oiOUCahJ.net
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
FLAG=$TRUE or $FALSE
968:デフォルトの名無しさん
19/10/23 10:57:17.22 jQcWWJt3.net
サイトによってrenameの構文が違うけどコマンド自体が違うのな
perl付属のprenameとutil-linux付属のrename.ulがあるとか
alternativesで書き換えられてるんだからそら気付かんわ
969:デフォルトの名無しさん
19/10/24 17:48:17.61 mthfJT/n.net
>>953
知らんかった。恥ずかしいw
970:デフォルトの名無しさん
19/10/24 17:49:17.77 mthfJT/n.net
>>954
それってTRUE=0とするのと何が違うの?
971:デフォルトの名無しさん
19/10/24 18:07:25.18 lp1ZwQII.net
>>956
サブシェルは関係ない。俺もちゃんと仕様読んだわけじゃないけど、
aliasは実行時じゃなくて、1単位ごとに → パース → 実行 の
パース時に変換してる感じ
そして1単位というのは、
alias FLAG=true
alias FLAG=false; FLAG && echo true
↑これは一行で一単位、だからtrueと表示されてしまうし
関数とか、プロンプトから、func() { 改行 とかやると
} 改行 するまで、ずっと行頭に > って表示されるだろ?
あれが1単位。だから↓みたいなものもtrueって表示されてしまうんだよ
alias FLAG=true
func() {
alias FLAG=false
if FLAG; then
echo true
fi
}
func
972:793
19/10/24 18:35:35.72 n545jbBX.net
>>795-797
時間が経ってしまいましたが、ありがとうございました
"$()"の中の"はエスケープする必要があるのかどうか、とか、変数代入への挙動とか、そういう細かいところがよくわかってなかったです。
973:デフォルトの名無しさん
19/10/24 22:00:36.73 mthfJT/n.net
>>958
あー。
aliasってたしか一つの構文解析のかなり初期段階で展開される筈だから,
その一つの解析対象の内部で定義されているaliasは(当然)それ自身の解析結果には反映されんな。
このへんだろうか??
URLリンク(pubs.opengroup.org)
974:デフォルトの名無しさん
19/10/25 00:11:27.02 6btPTvif.net
次スレ
シェルスクリプト総合 その32
スレリンク(tech板)
975:デフォルトの名無しさん
19/10/25 07:59:28.70 6Bcci7V7.net
>>957
真は0、偽は0以外という値を意識する必要が無い
(Cの真偽値は逆で紛らわしい)
true/falseコマンドが使えない環境でも使える
976:デフォルトの名無しさん
19/10/25 23:17:19.52 TUsRGFSK.net
>>962
true/falseがビルトインじゃないシェルは存在しない
また、[ の結果はtrueなら0、falseなら1と決まっている
977:デフォルトの名無しさん
19/10/26 06:21:32 0I+FrAtF.net
>>963
> true/falseがビルトインじゃないシェルは存在しない
今ならそう言えるだろうが、かつては存在した
外部コマンドのtrue/falseがその名残りだ
> また、[ の結果はtrueなら0、falseなら1と決まっている
0は数値の0であってtrueではない
trueを表現するのに0を使っているだけだ
まあ真偽値を扱うならtrue/falseを使えってことだな
978:デフォルトの名無しさん
19/10/26 09:53:59.01 Q5pTtErv.net
trueを表現するのに0を使っているというより、真偽に成功不成功をそのまま使ってるというだけだろ
979:デフォルトの名無しさん
19/10/26 10:32:17.69 a0V3mxKP.net
>>964
> 今ならそう言えるだろうが、かつては存在した
かつてとはいつで、どこの実装であるのか答えなさい
また、現存しない物の話をしても意味はない
そもそも [ が存在しない環境では使えない
外部コマンドの [ がその名残りだ
980:デフォルトの名無しさん
19/10/26 10:33:01.78 swDBEFOl.net
成功/不成功は終了ステータスであって真偽値ではない
981:デフォルトの名無しさん
19/10/26 10:37:22.98 3fttRo5u.net
え、まさか、
hoge && FLAG=$TRUE || FLAG=$FALSE
:
:
if [ "$FLAG" -eq "$TRUE" ] then ・・・
if [ "$FLAG" -eq "$FALSE" ] then ・・・
とか書くつもり・・・?
982:デフォルトの名無しさん
19/10/26 10:56:36.80 0I+FrAtF.net
>>968
終了ステータスを真偽値で判断するのか
珍しいやつだなw
983:デフォルトの名無しさん
19/10/26 11:14:58.17 3fttRo5u.net
>>969
変数に真偽値を入れるって話で
終了ステータスを入れる馬鹿を皮肉ってるだけだろw
984:デフォルトの名無しさん
19/10/26 11:16:54.58 Q5pTtErv.net
while true
do
や、
FLAG=true
or
FLAG=false
if $FLAG; then
真偽に成功不成功をそのままは、なんて書きたかっただけだろ、そうの方が見た目がいいしな
なんでそんなに拘っているんだか
985:デフォルトの名無しさん
19/10/26 11:21:27.44 3fttRo5u.net
つーか、いいかげんにしろよ。
真偽値の値を何にするかって話だろ
誰も真偽値をどうやって生成するかの話なんかしてねーよ
986:デフォルトの名無しさん
19/10/26 11:22:36.82 3fttRo5u.net
いつものやつ言っとくわ
>>971
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
987:デフォルトの名無しさん
19/10/26 11:23:54.27 Q5pTtErv.net
FLAG=true or false
FLAG=1 or 0
etc
なんでも好きにすればいいだろ
true/falseコマンドを使った方が見た目簡潔じゃないかと思うがな、個人的に。使わんけど
お前がいいかげんにしろよw
988:デフォルトの名無しさん
19/10/26 11:29:02.54 3fttRo5u.net
質問が出てる時点で、意図がわからないコードってことなんだがw
957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954
それってTRUE=0とするのと何が違うの?
それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ
989:デフォルトの名無しさん
19/10/26 11:32:55.31 Q5pTtErv.net
俺は他alias使ったのやのその話題は、なにをわざわざ凝ったことしようとしてるのか意図不明で趣味なんだろなとしか思ってない
990:デフォルトの名無しさん
19/10/26 11:33:38.63 T/HAOzs9.net
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
991:デフォルトの名無しさん
19/10/26 11:34:25.41 3fttRo5u.net
>>976
趣味(実用的ではないネタコード)に、正当っぽい理由をつけるなって話だ
992:デフォルトの名無しさん
19/10/26 11:36:44.02 Q5pTtErv.net
ただの雑談だろ
あれを強制するなりしているわけでもないのに、なにをそう否定してんだか
そんなヤツがリアルで一緒に仕事するなら思いっきりくそ叩くがなw
993:デフォルトの名無しさん
19/10/26 11:37:51.16 3fttRo5u.net
あとC言語の世界しか知らんようだから言っておくと、rubyは0も1もtrueな
シェルスクリプトは反対で0がtrueで1がfalseなんだ、それ以外の回答はない!ってのは
ちょっと考えが浅いんじゃないですかねぇw
URLリンク(osishow3.hateblo.jp)
nil is false
false is false
0 is true
1 is true
994:デフォルトの名無しさん
19/10/26 11:39:18.03 Q5pTtErv.net
何をひとりで妄想に走っているんだか
だれか「いいかげんにしろ」とか言ってなかったか?w
995:デフォルトの名無しさん
19/10/26 11:42:23.29 3fttRo5u.net
俺に突っかかってきてないで、シェルスクリプトの話題をしたら?
996:デフォルトの名無しさん
19/10/26 11:43:40.40 Q5pTtErv.net
よくいうよw
997:デフォルトの名無しさん
19/10/26 11:47:29.21 3fttRo5u.net
そりゃいうだろ、いきなりシェルスクリプトと関係ない
「俺」の話を始めるんだからw
998:デフォルトの名無しさん
19/10/26 11:50:09.04 Q5pTtErv.net
言ったことに対してはそりゃ言うだろう。お前がわざわざ言ったんだから
そんなのが無くてもいいのに。お前だった元々のやつを「アホ」呼ばわりしてるじゃん
999:デフォルトの名無しさん
19/10/26 15:54:12.94 0I+FrAtF.net
>>975
set +e
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
set -e
動かんと言ってる方がアホだと思う
1000:デフォルトの名無しさん
19/10/26 16:04:47.31 +M+pJ73c.net
set -eで正しく動かない
↓
set +eと書いて動くと主張。赤っ恥w
1001:デフォルトの名無しさん
19/10/26 16:15:33.38 0I+FrAtF.net
逃げ方がチョン臭くてキモい
1002:デフォルトの名無しさん
19/10/26 16:17:36.78 +M+pJ73c.net
しかも、最初の状態が set +e だったら
set -e に状態が変わってしまうというクソコード
汎用性がない
1003:デフォルトの名無しさん
19/10/26 16:20:27.41 +M+pJ73c.net
true / false を使えばいいのに、[ が入ってない環境を考慮せずに、
true / false が入ってないかもしれないから [ を使ったと言う無能ぶりw
1004:デフォルトの名無しさん
19/10/26 16:22:55.60 0I+FrAtF.net
最初にset -eするとルール化するだけ
いちゃもんつけるの得意だな
1005:デフォルトの名無しさん
19/10/26 16:24:16.70 0I+FrAtF.net
[]やtestが使えないシェル教えてくれよ
1006:デフォルトの名無しさん
19/10/26 16:25:06.04 +M+pJ73c.net
TRUEの反対だからfalseというが、
FALSEの反対もfalseになってると気づいてなくて
そもそもシェルスクリプトの仕様をわかってないw
[ 0 = 0 ]; echo $? # => 0
[ ! 0 ]; echo $? # => 1
[ ! 1 ]; echo $? # => 1
1007:デフォルトの名無しさん
19/10/26 16:27:23.30 +M+pJ73c.net
>>992
上の方で /bin/true, /bin/false コマンドがあるんだから
true, false が使えないシェルがあるはずだって主張していたぞw
その理屈で言えば [ コマンドもあるんだから、 [ が使えないシェルもあるってことになるんだがなw
1008:デフォルトの名無しさん
19/10/26 16:28:56.67 +M+pJ73c.net
更に言うなら
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
これにサブシェルを使うのもアホらしいw
1009:デフォルトの名無しさん
19/10/26 16:29:21.39 0I+FrAtF.net
>>994
cshのbuiltin調べてこい
分かったらすいませんって言えよw
1010:デフォルトの名無しさん
19/10/26 16:29:57.11 +M+pJ73c.net
>>1みろ
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
1011:デフォルトの名無しさん
19/10/26 16:30:08.87 0I+FrAtF.net
あーいつものマウントとらないと死ぬ病気のやつか
おだいじに
1012:デフォルトの名無しさん
19/10/26 16:30:30.62 +M+pJ73c.net
>>1じゃなくて>>2だったな
> ・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
1013:デフォルトの名無しさん
19/10/26 16:30:49.43 +M+pJ73c.net
>>998
マウント取られて可愛そうwww
1014:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 17時間 12分 59秒
1015:1002
Over 1000 Thread.net
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
──────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
URLリンク(premium.5ch.net)
▼ 浪人ログイン
1016:はこちら ▼ https://login.5ch.net/login.php
1017:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています