首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCSH脚本和scp命令

TCSH脚本和scp命令
EN

Stack Overflow用户
提问于 2015-05-25 20:59:11
回答 2查看 585关注 0票数 0

我对在Ubuntu下(在Parallella上)看到的以下奇怪行为感到抓挠。这个scp命令本身工作正常:

代码语言:javascript
复制
$ scp user@UNIT1:~/myMPI/filename user@UNIT2:~/myMPI/

但是一旦我把它包装成一个脚本:

代码语言:javascript
复制
#!/bin/tcsh -f

scp user@UNIT1:~/myMPI/$1 user@UNIT2:~/myMPI/

发布它,我明白了:

代码语言:javascript
复制
$ thescript filename

user: invalid user name

用户名中没有空格或句点,这在命令行上也会失败,而不仅仅是在脚本中。然而,tcsh在某种程度上破坏了scp命令。

帮助?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-29 18:51:19

Kenster指出:脚本文件中的用户名前面隐藏着寄生式$C2 () $AD (软连字符)字符对。我不知道他们是怎么进去的(也不知道为什么Leafpad不给他们看),但是现在他们走了,脚本就像预期的那样工作。

也要感谢基思·汤普森的努力。

票数 0
EN

Stack Overflow用户

发布于 2015-05-27 16:23:44

下面是scp程序中发出该错误的代码:

代码语言:javascript
复制
int
okname(char *cp0)
{
    int c;
    char *cp;

    cp = cp0;
    do {
        c = (int)*cp;
        if (c & 0200)
            goto bad;
        if (!isalpha(c) && !isdigit((unsigned char)c)) {
            switch (c) {
            case '\'':
            case '"':
            case '`':
            case ' ':
            case '#':
                goto bad;
            default:
                break;
            }
        }
    } while (*++cp);
    return (1);

bad:    fprintf(stderr, "%s: invalid user name\n", cp0);
    return (0);
}

它不接受包含序数值超过127的字符或某些标点符号的用户名。据推测,脚本中被编辑的用户名之一违反了这些条件之一。无意中,我首先怀疑的是,这里有一个重音字符,或者是一些unicode文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30445930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档