如何检查$dir
是否等于"string"
?
我正在尝试这个:
array=(/path/to/folders/*)
for dir in "${array[@]}"; do
if["${dir}" == "/path/to/folders/subfolder"]; then
do something...
fi
done
答案 0 :(得分:3)
在shell中,空格很重要。替换:
if["${dir}" == "/path/to/folders/subfolder"]; then
使用:
if [ "${dir}" = "/path/to/folders/subfolder" ]; then
注意:
在shell中,[
是命令的名称。它不应该与其他字符串连接。
]
是[
所需的最终参数。它也不应该与其他字符串连接。
虽然bash接受==
或=
,但=
是与[...]
内字符串相等的POSIX兼容运算符。
答案 1 :(得分:1)
看似奇怪,[
实际上是命令,也称为test
命令。尝试:
type [
你得到:
[ is a shell builtin
这是历史性的。 if
语句的语法实际上是if
compound_list ,括号实际上不是if
语句的一部分,尽管当然这是它们通常的位置使用
shell语法的一般原则是令牌由空格分隔。因此,[
命令的参数必须通过空格与其分隔,就像您需要ls -l
中的空格一样(ls-l
将不起作用)。
此外,[
的最终(最右侧)参数必须为]
。同样,空格必须将其分开以使其成为自己的标记。
所以:
if [ "$dir" == "/path/to/folders/subfolder" ]
在这个例子中,我们将4个参数传递给[
命令。
{ }
是多余的,但如果您喜欢输入{ }
,则不会造成任何伤害。
答案 2 :(得分:0)
虽然
<?php
// apt-get install php5 libapache2-mod-php5 php5-curl
// curl 'http://localhost:8983/solr/update/csv?fieldnames=url,keywords,description,title&commit=true' -H 'Content-type:text/plain; charset=utf-8' --data-binary @$file
$fileoutput = 'solr-upload.txt';
date_default_timezone_set("UTC");
$timestamp = time();
$servertime = date('m/d/Y H:i:s', $timestamp);
$SOLR_SERVER = '127.0.0.1';
$CORE = 'core1';
ob_start();
$callback = &$_REQUEST['fd-callback'];
$url = 'http://'. $SOLR_SERVER .':8983/solr/'. $CORE .'/update/csv?fieldnames=id,keywords,description,title&commit=true';
if (!empty($_FILES['fd-file']) and is_uploaded_file($_FILES['fd-file']['tmp_name'])) {
$name = $_FILES['fd-file']['name'];
$data = file_get_contents($_FILES['fd-file']['tmp_name']);
} else {
$name = urldecode(@$_SERVER['HTTP_X_FILE_NAME']);
$data = file_get_contents("php://input");
}
$header = array("Content-type:text/csv; charset=utf-8");
$post = $data;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
//curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_exec($ch);
curl_close($ch);
if ($ch) {
$outputstring = $name . ' success ' . $servertime . "\n";
$output = 'Upload Success!';
file_put_contents($fileoutput, $outputstring , FILE_APPEND | LOCK_EX);
}else {
$outputstring = $name . ' failed ' . $servertime . "\n";
$output = 'Upload did not work!';
file_put_contents($fileoutput, $outputstring , FILE_APPEND | LOCK_EX);
}
// $opt = &$_REQUEST['upload_option'];
// isset($opt) and $output .= "\nReceived upload_option with value $opt";
if ($callback) {
header('Content-Type: text/html; charset=utf-8');
$output = addcslashes($output, "\\\"\0..\x1F");
echo '<!DOCTYPE html><html><head></head><body><script type="text/javascript">',
"try{window.top.$callback(\"$output\")}catch(e){}</script></body></html>";
} else {
header('Content-Type: text/plain; charset=utf-8');
echo $output;
}
?>
[ this ]中的回答了您的问题,我建议您使用
if [ "${dir}" = "/path/to/folders/subfolder" ]; then
因为if [[ "${dir}" == "/path/to/folders/subfolder" ]]; then
表单支持正则表达式匹配(使用[[..]]
运算符)。有关详细信息,请参阅此[ article ]。