我试图搜索如何在Bash函数中传递参数,但是出现的是如何从命令行传递参数.
我想在我的脚本中传递参数.我试过了:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是语法不正确,如何将参数传递给我的函数?
我希望使用我的shell脚本调用多种形式的命令行选项.
我知道getopts可以使用,但就像在Perl中一样,我无法对shell做同样的事情.
关于如何做到这一点的任何想法,以便我可以使用如下选项:
./shell.sh --copyfile abc.pl /tmp/
./shell.sh -c abc.pl /tmp/
Run Code Online (Sandbox Code Playgroud)
在上面,两个命令对我的shell意味着相同的东西,但使用getopts,我还没有能够实现这些?
我知道我可以轻松地在bash中获取这样的定位参数:
$0 要么 $1
我希望能够使用这样的标志选项来指定使用每个参数的内容:
mysql -u user -h host
Run Code Online (Sandbox Code Playgroud)
通过国旗而不是按位置获得-u param价值和-h param价值的最佳方法是什么?
如何将命令行参数转换为bash脚本数组?
我想接受这个:
./something.sh arg1 arg2 arg3
Run Code Online (Sandbox Code Playgroud)
并将其转换为
myArray=( arg1 arg2 arg3 )
Run Code Online (Sandbox Code Playgroud)
这样我就可以使用myArray在脚本中进一步使用了.
这个以前的SO帖子很接近,但没有讨论如何创建数组:如何在Bash中解析命令行参数?
我需要将参数转换为常规的bash脚本数组; 我意识到我可以使用其他语言(例如Python),但需要在bash中执行此操作.我想我正在寻找一个"附加"功能或类似的东西?
更新:我还想问如何检查零参数并分配一个默认数组值,并且由于下面的答案,能够使这个工作:
if [ "$#" -eq 0 ]; then
myArray=( defaultarg1 defaultarg2 )
else
myArray=( "$@" )
fi
Run Code Online (Sandbox Code Playgroud) 我想写一个带有不同参数的bash脚本.它应该像普通的linux控制台程序一样使用:
my_bash_script -p 2 -l 5 -t 20
Run Code Online (Sandbox Code Playgroud)
因此,值2应保存在名为pages的变量中,参数l应保存在名为length的变量中,值20应保存在可变时间内.
做这个的最好方式是什么?
我正在尝试创建一个shell脚本,其设计如下:
script.sh -t application
Run Code Online (Sandbox Code Playgroud)
首先,在我的脚本中,我想检查脚本是否已使用-t标志运行.例如,如果它没有像这样的标志运行我想让它出错:
script.sh
Run Code Online (Sandbox Code Playgroud)
其次,假设有一个-t标志,我想获取该值并将其存储在我可以在我的脚本中使用的变量中,例如:
FLAG="application"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够在任何一个方面取得的唯一进展是$ @抓取所有命令行参数,但我不知道这与标志有什么关系,或者这是否可能.
所以我的问题是如何使用Linux中的终端命令将文件参数传递给我的bash脚本?目前我正在尝试在bash中创建一个程序,该程序可以从终端获取文件参数并将其用作程序中的变量.例如我myprogram --file=/path/to/file在终端中运行
.
#!/bin/bash
File=(the path from the argument)
externalprogram $File (other parameters)
Run Code Online (Sandbox Code Playgroud)
如何通过我的程序实现这一目标?
我试图-temp用Bash getopts 解析一个选项.我正在调用我的脚本:
./myscript -temp /foo/bar/someFile
Run Code Online (Sandbox Code Playgroud)
这是我用来解析选项的代码.
while getopts "temp:shots:o:" option; do
case $option in
temp) TMPDIR="$OPTARG" ;;
shots) NUMSHOTS="$OPTARG" ;;
o) OUTFILE="$OPTARG" ;;
*) usage ;;
esac
done
shift $(($OPTIND - 1))
[ $# -lt 1 ] && usage
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个输入文件的脚本,通常这些是默认存储在标准位置并由脚本调用.
但是,有时需要使用更改的输入来运行它.
在脚本中我现在说3个变量$ A $ B和$ C,现在我想用非默认的$ B运行它,明天我可能想用非默认的$ A和$ B来运行它.
我已经了解了如何解析命令行参数: 如何在Bash中解析命令行参数?
但我不知道如何在某些时候处理由命令行语句设置的问题?
我没有足够的代表回答我自己的问题,但我有一个解决方案:
#!/bin/bash
a=input1
b=input2
c=input3
while getopts "a:b:c:" flag
do
case $flag in
a) a=$OPTARG;;
b) b=$OPTARG;;
c) c=$OPTARG;;
esac
done
Run Code Online (Sandbox Code Playgroud)
道歉我显然没有像我想的那样彻底搜索......
我有一堆来自扫描文档的PDF文件.这些文件包含图像和文本的混合.有些被扫描为没有OCR的图像,因此每个PDF页面都是一个大图像,即使整个页面完全是文本.其他人使用OCR进行扫描,并包含图像和可搜索的文本,其中包含文本.在许多情况下,甚至图像中的文字也可以搜索到.
我想使用OCR,使用Acrobat 8 Pro进行自动处理以识别所有扫描文档中的文本,但我不想重新OCR过去已经通过OCR过程的文件.有没有人知道是否有办法告诉哪些只包含图像,哪些已包含可搜索的文本?
我打算在C#或VB.NET中这样做,但我不认为能够分辨两种文件是依赖于语言的.