Bashでプログラミング [転載禁止]©2ch.net

1ピラフ2015/10/04(日) 00:11:42.24ID:KQhWWZXy
Bash - GNU Project - Free Software Foundation
https://www.gnu.org/software/bash/

117login:Penguin2016/03/08(火) 14:41:04.49ID:ZfpEki75
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ではだめです。
どうしたらいいでしょう。

118login:Penguin2016/03/08(火) 14:48:48.74ID:B0X8XFR+
>>117
読むのだるいからさ?
問題ない所までは省いて
問題があるところだけ書けよ

119login:Penguin2016/03/08(火) 15:49:59.75ID:ZfpEki75
すまん

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

長いファイルではダメなのかな?

120login:Penguin2016/03/08(火) 17:54:50.78ID:B0X8XFR+
cat test の意味は?
必要最小限にしないからわからんのよ。
testの中身の文字もさ、限界ギリギリまで減らしてみて

121login:Penguin2016/03/08(火) 17:55:43.82ID:B0X8XFR+
修正

限界ギリギリまで減らした状態での
動く場合 と 動かない場合 の
2つのパターンを書いてみて

122login:Penguin2016/03/10(木) 09:06:25.61ID:gEv7eiQN
k1の内容が
media_dir=/home/foge/Downloads/
network_interface=eth0
port=PPP
serial=6810
で 、シェルクリプトが 
z=55555
sed 's/PPP/'

123login:Penguin2016/03/10(木) 09:49:42.62ID:gEv7eiQN
あれ 尻切れとんぼ
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 はだめ

124login:Penguin2016/03/10(木) 09:57:45.77ID:1kGddc4A
だからね。

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

動かない方、どこまで想定通りに動いているのか?
想定通りに動いているところは省略して、
想定通りに動いていない所だけ書いてって話をしてるんだよ。

125login:Penguin2016/03/10(木) 10:56:36.03ID:gEv7eiQN
了解
echo $z
で確かに$zには想定とおりの値がでてくる。
しかし sed 's/PPP/'"$z"'/' k1 はだめ。
'"$z"' がいけないと思う。 だが 分からない。

126login:Penguin2016/03/10(木) 11:24:11.01ID:gEv7eiQN
きたならしく 一応できた。   ./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

127login:Penguin2016/03/10(木) 11:56:18.43ID:NdYWsqwM
それは echo ではなく expr が出力している。

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

でいいんじゃないの? これでちゃんと動いたよ。

128login:Penguin2016/03/10(木) 12:28:00.31ID:gEv7eiQN
shellが違うんでしょうね、うちでは 下ではエラー expr: syntax error
z=`expr $y "*" 1000 + $x`
echo $z
使ってるのは OS :armbian で シェルは わからない

129login:Penguin2016/03/10(木) 22:00:45.11ID:NdYWsqwM
多分、勘違いしているのはここ。

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

これは一時的に環境を変更した上でコマンドを起動するための構文。
bash の man の 2520 行目辺りに書かれている。
この場合は環境変数 z に空文字列をセットして expr を起動する。
そして、それが終わったらもう z は存在しない。
だから echo では何も出力されない。

130login:Penguin2016/03/25(金) 11:08:22.48ID:BrsvjcQb
環境変数 $BASH_COMMAND で最後に実行したコマンドが取得できますが
ほんとに最後に実行したコマンドなので
ls | cat
みたいにしたときに当然ながら cat しか取れません

最後に実行したときのコマンドラインに打った文字列
を取得するにはどうしたらよいでしょうか

131login:Penguin2016/03/25(金) 11:21:48.13ID:Wj6xxs6s
historyあたりで頑張るとか

132login:Penguin2016/03/25(金) 11:33:33.72ID:BrsvjcQb
>>131
ありがとう
historyあたりで頑張ります

133login:Penguin2016/03/31(木) 08:26:58.05ID:gSxvuyP1
Windows10搭載ってまじかよ

134login:Penguin2016/03/31(木) 12:19:44.47ID:lhT3jASv
http://unix.oskp.net/sua

XPとかなbashとかコンパイルしたら
動いたけど、バイナリ互換はすごいな

135login:Penguin2016/04/01(金) 10:00:39.79ID:+PxKnYGY
curlでAPI叩いてるんだけど返事帰ってくるまでCreating..........みたいに....を増やしたい
どういうふうに書けばいい?

136login:Penguin2016/04/01(金) 10:23:48.01ID:2l1U0Mzg
>>135
別プロセスで実行して、そのプロセスが生きている間
. を増やし続ければいい

137login:Penguin2016/04/01(金) 10:48:52.54ID:+PxKnYGY
1秒ごとにチェックして生きてたら....を出力死んでたらそのままみたいなことか
やってみるわ

138login:Penguin2016/04/01(金) 16:24:42.97ID:YrmxN89w
windowsでbaプロできるようになるみたいですね(´・ω・`)

139login:Penguin2016/04/01(金) 19:49:29.08ID:opN9G6gR
HOGEDIR="${HOME}/path/to/directory" のように既存のディレクトリへのpathを変数に入れたら下記のような感じで実在チェックした方がいいんでしょうか?
自分は転ばぬ先の杖だと思って(事実、何度かtypoしてます)書くようにしていますが……

if test ! -d "$HOGEDIR"; then
    echo '$HOGEDIR is *NOT* a Directory!' 1>&2
    exit 1
fi

140login:Penguin2016/04/01(金) 20:48:16.55ID:pqGjBE9F
変数に入れるかどうかは実在チェックの必要性に変化を与えるものではない

141login:Penguin2016/04/01(金) 21:01:52.69ID:FfS85Ldg
だがその実在性が極めて疑わしい性的な穴隙に変化を与えられた私はそれに入れる事を夢想し夢精するものである

142login:Penguin2016/04/02(土) 12:51:53.29ID:2K6xkzqa
セキュリティにも穴はあるんだよな・・・

143login:Penguin2016/05/09(月) 14:51:55.56ID:tGlvk2AC
exec 3>$1
みたいにファイルディスクリプタを指定するとき
すでに使われるディスクリプタ番号を避けたいんだけど
どうしたらいいの?

144login:Penguin2016/05/09(月) 15:18:10.05ID:1X5m9uCK
Bash詳説みたいな本ないかな?
やっぱオライリーか…

145login:Penguin2016/05/10(火) 04:31:28.39ID:D4kfzW96
open とか、複製する dup でも、未使用のファイルディスクリプタを使う

146login:Penguin2016/05/22(日) 16:49:48.48ID:q7UTLg4q
SoftwareDesign 6月号、1,220円 + 税

特集、Bash 再入門・MySQL

147login:Penguin2016/05/22(日) 17:04:20.44ID:uBlhVZDB
>>145
どうやって?

148login:Penguin2016/05/23(月) 08:00:46.64ID:MmvCX7kr
最近の言語に慣れると
コマンドラインベースの言語って理解しにくいね
コマンドを文字型変数として理解しようとしてハマる

149login:Penguin2016/05/25(水) 19:15:04.18ID:A0i8LpMi
debianとかubuntuにはwhiptailなんてのがデフォルトであるらしい
今まで選択候補をcat -b >&2してからread REPLY </dev/ttyしていたのをさっそく書き換えてみた
けっこうすっきり書けて個人的には大満足

150login:Penguin2016/07/19(火) 14:21:22.35ID:W6/OJD/n
コンソールにできたバイナリを16進で出力するにはどうしたら良いですかね

151login:Penguin2016/07/19(火) 15:29:25.71ID:yBnV/0hR
>>150
hexdumpやodで出力すればいいんじゃないですかね

152login:Penguin2016/09/07(水) 13:04:02.24ID:Zv6pU7x4
背景色を一気に変更したい

153login:Penguin2016/09/08(木) 01:20:29.54ID:4a9rtSBz
「linux 端末 色」で検索!

154login:Penguin2017/11/07(火) 14:00:12.38ID:3IDunlyg
関数を定義したshファイルを実行したあと、その関数を使いたいんだけど
どうしたらいいの?

155login:Penguin2017/11/07(火) 14:24:33.56ID:As8jAu29
>>154
汎用的に使う関数なら ~/.bashrc に書いて
あとは普通に関数名で実行すればいいだけ
function foo {
}

ならfooで呼び出し。

156login:Penguin2017/11/08(水) 06:57:36.00ID:N8l/Vn75
>>154
.

157login:Penguin2017/12/29(金) 13:13:26.87ID:S/CsVkMC
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

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

2UMY6SSHSE

158login:Penguin2018/02/15(木) 07:37:05.23ID:m3isa15O
☆ 私たち日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆

159login:Penguin2018/05/22(火) 11:10:50.11ID:Czl6p0FW
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

FOJ8E

160login:Penguin2018/08/15(水) 15:18:59.23ID:dfDlag4t
てst

161login:Penguin2018/08/15(水) 15:20:23.48ID:dfDlag4t
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを html改行コードに変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?

162login:Penguin2018/08/15(水) 15:21:00.64ID:dfDlag4t
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを < b r >に変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?

163login:Penguin2018/08/15(水) 17:04:04.34ID:dfDlag4t
解決しました

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

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


なぜだろう?

164login:Penguin2018/08/16(木) 19:43:27.04ID:I7VrLkNo
>163
sedで改行をどうこうするのは意外とハイレベルな知識が要るからかな
単に改行を置換したいだけならtr使うほうが筋がいいと思う

165login:Penguin2018/08/17(金) 21:35:15.57ID:jq4Ra/PN
>>164
urlエンコードから飛んできた文字列をURLデコードした後の文字列はecho
なんかで出力しても隠れてみえない \n が見えない
アスキーコードで書かれた文字列はsedじゃ無理?のようなきがする

166login:Penguin2018/08/17(金) 21:45:02.38ID:x+SQYw9w
POSIXのコマンドも今の人達が再設計すれば
もっと良いものが作れるんだろうな

167login:Penguin2018/08/18(土) 00:38:01.74ID:hWfi1+lO
素直にUnix2dos、dos2unix使おう、な?

新着レスの表示
レスを投稿する