作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个自定义 shell,并且 echo 使用我的 shell 变量:
'PATH' is set to /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin.
$ str=FOO
$ echo $str
19163: executing echo
FOO
19163: executed
$ str=BAR
$ echo $str
19170: executing echo
BAR
19170: executed
$
shell 变量的实现如下所示:
static bool expand_parameter(char *shellcommand, hashtable_t *hashtable) {
char mystring[CMD_LEN];
char *cp;
char *ep;
strcpy(mystring, shellcommand);
cp = strstr(mystring, "$");
int position = cp - mystring;
int quote = isBetweenQuotes(position, mystring);
if (cp) {
*cp = '\0';
strcpy(shellcommand, mystring);
ep = ++cp;
while (*ep && (*ep != ' ')) {
ep++;
}
if (!quote)
strcat(shellcommand, ht_get(hashtable, cp));
else {
strcat(shellcommand, "$");
strcat(shellcommand, cp);
strcpy(mystring, shellcommand);
return false;
}
}
strcpy(mystring, shellcommand);
return true;
}
我应该如何让 shell 打印 echo $0
来回显 shell 名称?我应该将其硬编码到我的 shell 变量函数中还是有最佳实践方法来做到这一点?
该代码的目的是启用 shell 变量。该项目是https://github.com/montao/openshell
最佳答案
Shell 参数,例如 $0
, $1
...作为数组 char **argv
接收到您的 shell作为第二个参数传递给 main()
功能。如果您不想过多修改代码,可以将这些变量复制为键 0
, 1
...在调用您的 expand_parameter
之前先到哈希表功能,并且应该可以工作。但有一天你将不得不实现 shift
就像命令一样,也许您必须以不同的方式管理它们。
关于c - 如何使用自定义 shell 回显 $0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914165/
我是一名优秀的程序员,十分优秀!