好像一直没怎么正儿八经的写shell....今天不得不动手写了。反正就是摸着石头过河吧。
for i in {1..20} do mydate=$(date -v-"${i}d" +"%Y/%m/%d") echo "------Now importing:"$mydate"--------" done
这样就实现了一个简单的for循环。
- do 和done完成一个循环...
- date是给日期的,mac和linux貌似语法有点不一样,date -v-1d 这样是往前减一天。后面那个是日期的格式。
- 然后等号旁边不能有空格,这个和r差别好大。
- 然后如果command中间要引用变量,需要${}一下,有点像r的paste()然后eval(parse())。
- 1..20相当于r的1:20,给出一个整数序列。echo就是打印到屏幕上了。
暂时就这些,至少现在用起来是正常的哈哈。
11 replies on “简单的shell”
个人不建议用shell,语法混乱,各种心智负担,各种陷阱。
建议用python或者ruby这种专业的语言来做,写起来更简单。
http://stackoverflow.com/questions/166347/how-do-i-use-ruby-for-shell-scripting
多谢,其实R也可以做....但是技多不压身嘛...
呵呵,lz学的好多
被逼的啊...说起来都是血泪史....
xargs大法好。写bash当然要一行帝。。
seq 1 20 | xargs -I{} date -d'-{}day' +'---importing:%Y/%m/%d---'
而且对科学计算而言,xargs牛逼的地方还在于可以随时并行。加一个xargs -P 12就会开12个进程一起跑。如果有机群的话还可以用parallel -P 120在不同的机器上一共开120个进程,大家一起跑。详情参见https://grapeot.me/easy-and-cheap-cluster-building-on-aws.html
你这是想让我入坑么?让我考虑一下....入坑前需三思嗯嗯。
哈哈,bash很强的啦。不过有限的时间还是要投入到无限的革命事业中去(划掉)要用在刀刃上。看看提高统计分析内功还是shell编程外功哪个更能提高效率(a.k.a. 赚的钱)啦。
生命有限,还是提高效率...
不对,应该是享受人生....我还是去海滩上晒太阳吧哈哈哈哈
哈哈,太羡慕你们了,17-mile drive和一号公路近在咫尺,就算去Half Moon Bay或者金门大桥也很好看啊。。
santa cruz比half moon bay暖和多了....还有美味的海鲜呜呜。