sh/bash/dash/ksh/zsh等Shell脚本
-
fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
#1
帖子
由 fanhe » 2012-04-11 12:35
我现在只能这样做
其实就是定义一个文件列表,然后遍历做一些操作,不想涉及读任何文本文件
感觉上肯定还有其他更好的方法
代码: 全选
#!/bin/sh
files=`cat << EOF
a
b
c
EOF
`
echo "$files" | while read line; do
echo "$line"
done
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#2
帖子
由 lilydjwg » 2012-04-11 12:42
-
fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
#3
帖子
由 fanhe » 2012-04-11 17:01
这个不好用的
应该说,有没有好办法把 here document 直接赋值到变量
-
cao627
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
#4
帖子
由 cao627 » 2012-04-11 17:12
楼主的脚本什么意思 ?没理解
-
cao627
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
#5
帖子
由 cao627 » 2012-04-11 17:28
files="a\nb\nc"
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#6
帖子
由 lilydjwg » 2012-04-11 18:19
fanhe 写了:
这个不好用的
应该说,有没有好办法把 here document 直接赋值到变量
为什么不好用?
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#7
帖子
由 lilydjwg » 2012-04-11 18:21
代码: 全选
a=$(<<EOF
dkfjd
lsdkfj
)
这样如何?
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#8
帖子
由 aerofox » 2012-04-11 19:10
fanhe 写了:
这个不好用的
应该说,有没有好办法把 here document 直接赋值到变量
我想,你应该关心的是两点:(1) 赋值后,变量的值是什么?(2) 变量的值来自何处?是脚本文件中?还是用户输入?还是另一个文件或者程序输出?
只要这两点要求满足了,你还要关心它是 here document 还是别的什么吗?
-
fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
#9
帖子
由 fanhe » 2012-04-11 22:37
这不是很简单的需求么
例如我想打包一些文件,就想一个 sh 脚本搞定,然后就是列出来一些文件,一个文件一行,要醒目易改
就好像 Makefile 里面定义一个文件列表到一个变量一样
看来还是这个方法够了
代码: 全选
files=`cat << EOF
here
EOF
`
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#10
帖子
由 aerofox » 2012-04-11 22:40
fanhe 写了:这不是很简单的需求么
例如我想打包一些文件,就想一个 sh 脚本搞定,然后就是列出来一些文件,一个文件一行,要醒目易改
就好像 Makefile 里面定义一个文件列表到一个变量一样
看来还是这个方法够了
代码: 全选
files=`cat << EOF
here
EOF
`
你这个办法结果上跟2楼的办法一样,而更冗长,看不出有什么好。
-
fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
#11
帖子
由 fanhe » 2012-04-11 22:57
aerofox 写了:fanhe 写了:这不是很简单的需求么
例如我想打包一些文件,就想一个 sh 脚本搞定,然后就是列出来一些文件,一个文件一行,要醒目易改
就好像 Makefile 里面定义一个文件列表到一个变量一样
看来还是这个方法够了
代码: 全选
files=`cat << EOF
here
EOF
`
你这个办法结果上跟2楼的办法一样,而更冗长,看不出有什么好。
显然不一样,vim这样可以随便删除,尤其是第一行和最后一行的时候,直接一行删除,而按2楼那样,首尾行都要特殊处理
道不同不相为谋,估计跟你没什么交集的了
另外不得不吐槽json的格式,{} 里面的字段,最后的那行一定不能加逗号,这对有时候要加字段的时候是很蛋疼的事
而 c 都支持这样的了
-
aerofox
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
#12
帖子
由 aerofox » 2012-04-11 23:09
fanhe 写了:道不同不相为谋,估计跟你没什么交集的了
只能对你表示道歉了!
-
lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
-
联系:
#13
帖子
由 lilydjwg » 2012-04-11 23:39
fanhe 写了:
另外不得不吐槽json的格式,{} 里面的字段,最后的那行一定不能加逗号,这对有时候要加字段的时候是很蛋疼的事
而 c 都支持这样的了
JSON 太严格了,JavaScript 也这样。不过在非 IE 里最后一项后边也是可以加逗号的。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#14
帖子
由 eexpress » 2012-04-12 9:04
要Perl不
shell多蛋疼。
● 鸣学
-
link_01
- 帖子: 1024
- 注册时间: 2008-11-05 13:24
#15
帖子
由 link_01 » 2012-04-12 9:25
人家来回复,你不采用不就完了,还什么道不同不相为谋
代码: 全选
#!/bin/sh
files='
a
b
c
'
for f in $files; do
touch ./$f
done
笔记
-------------------------------------
http://blog.163.com/wqt_1101