由于在分析過程中,有很多時(shí)候會(huì)進(jìn)行批量操作或者重復(fù)操作從而反復(fù)使用同一個(gè)腳本,程序應(yīng)避免把路徑寫死以免造成反復(fù)修改,于是我把python,r和bash的傳參方式整理了一下,以便日后寫程序使用的方便。
1、python給程序傳參
代碼如下
#!/usr/bin/python
import os ## 經(jīng)常用于文件系統(tǒng)路徑
from sys import argv
out_1, out_2, out_3 = argv[1],argv[2],argv[3]
print(out_1,out_2,out_3)
調(diào)用方式如下:
python args.py x y z
輸出為:('x', 'y', 'z')
python默認(rèn)參數(shù)argv[0]為腳本名,所以參數(shù)從1開始
2、R給程序傳參
代碼如下
#!/usr/bin/Rscript
args=commandArgs(T)
print(args[1])
print(args[2])
print(args[3])
調(diào)用方式如下
Rscript args.R 1 2 3
輸出為:
[1] "1"
[1] "2"
[1] "3"
這里需要注意的是我們調(diào)用R腳本的時(shí)候需要使用的Rscript而不能用R,R默認(rèn)打開交互式界面而不正常運(yùn)行腳本!
3、Bash給程序傳參
Bash是Shell下的一種,個(gè)人電腦中的bash路徑為/bin/bash,而大家習(xí)慣修改為zsh,這里需要注意,如果shell解釋器發(fā)生變更很可能造成程序報(bào)錯(cuò),其實(shí)是很坑的。
如文件為test.sh,需要chmod 755 test.sh增加可執(zhí)行權(quán)限
給Bash傳參的代碼如下:
#!/bin/bash
echo "Shell 傳遞參數(shù)";
args1=$1;
args2=$2;
args3=$3;
echo -e $args1,$args2,$args3"\n";
Shell參數(shù)的傳遞相當(dāng)簡單,代碼中需要注意的是如果打印換行符需要加-e
以上格式是便于日后腳本處理的方便,批處理或者重復(fù)使用。