我有c-shell
set value_str ="one three"
set line_seprator = ","
set value_and_sperator = "$value_str$line_seprator"
setenv STRING_CONCAT $STRING_CONCAT$value_and_sperator
并且我得到了错误:
setenv: Too many arguments.
这是我在脚本中设置全局变量的方法,任何想法为什么我得到错误?
答案 0 :(得分:2)
只需要将字符串括在引号中 - csh
否则会被分隔符混淆。
setenv STRING_CONCAT "$STRING_CONCAT$value_and_sperator"
答案 1 :(得分:0)
您可以设置一个用空格分隔的列表。
private ApplicationDbContext db;
// api methods
public JsonResult methodA(string id){
Resource resource = db.Resources.Find(g);
db.Entry(resource).State = EntityState.Modified;
db.SaveChanges();
return methodB()
}
public JsonResult methodB(string id){
using (var db2 = new ApplicationDbContext())
{
Resource resource = db2.Resources.Find(id);
db2.Entry(resource).State = EntityState.Modified;
db2.SaveChanges();
}
return new JsonResult();
}
然后在脚本中
setenv value_str "val1 val2"
答案 2 :(得分:-1)
我认为大多数setenv
出现问题是因为人们不了解env变量是标量变量,即,虽然您可能循环使用
$a
的值
set a = (1 2 3)
这对于env变量是不可能的。
之后setenv A "1 2"
命令
echo $A[1]
不输出$A
的期望的第一部分,即1,而是写入
1 2[1]
要通过环境变量A
将向量传递到脚本并在其元素上循环,可以使用
set a = ($A)
foreach i ($a) ...
答案 3 :(得分:-2)
只需检查是否在给定setenv的行中,该行应以$ STRING_CONCAT $ value_and_sperator结尾。之后没有标签或空格。这也可能会导致此问题。甚至多个值(例如“。”)